有人能帮我修复这个代码吗,我真的需要它,但不知道下一步该做什么。我需要创建一个群聊,并发送messega给被邀请的人,现在它是example2@gmail.com,但它不...
有什么错误吗?
#!/usr/bin/python
import sys,os,xmpp,time
jid = 'example1@gmail.com'
psw = 'psw'
jid=xmpp.protocol.JID(jid)
cl=xmpp.Client(jid.getDomain(),debug=[])
cl.connect()
cl.auth(jid.getNode(),psw)
node = jid.getNode()
domain = 'talk.google.com'
room = node + '@' + domain
nroom = room + '/' + 'Maria'
mes = xmpp.Presence(to=nroom)
cl.sendInitPresence()
cl.send(mes)
NS_MUCUSER = 'http://jabber.org/protocol/muc#user'
invite = xmpp.simplexml.Node('invite')
invite.setAttr('to', 'example2@gmail.com')
invite.setTagData('reason', 'I really need it!')
mess = xmpp.Message(to=room)
mess.setTag('x', namespace=NS_MUCUSER).addChild(node=invite)
cl.send(mess)
msg = xmpp.protocol.Message(body="Hello there!")
msg.setTo(room)
msg.setType('groupchat')
cl.send(msg)
time.sleep(1) # some older servers will not send the message if you disconnect immediately after sending
cl.disconnect()
print "Done"发布于 2012-07-10 18:08:44
我发现我错了。问题是,我没有等待足够多的时间从服务器得到答案,我邀请了一些人,然后服务器才能创建聊天室。现在我等待服务器的应答,然后发送invite消息。
发布于 2012-07-05 15:26:31
根据specs http://xmpp.org/extensions/xep-0045.html#createroom -发送加入一个不存在的房间的请求应该创建该房间(或MUC)
创建和配置此类房间的工作流程如下:
用户向room@service/nick发送在线状态,并通过将扩展的在线状态信息包含在由'http://jabber.org/protocol/muc‘命名空间限定的空子元素中(注意缺少'#owner’或'# user‘片段)来表示他或她对多用户聊天协议的支持。如果该用户被允许创建房间,但该房间尚不存在,则该服务必须根据某种默认配置创建该房间,将请求的用户指定为初始房间所有者,并将该所有者添加到该房间,但不允许其他任何人进入该房间(实际上是将该房间“锁定”)。所有者从房间接收的初始存在节必须包括扩展的存在信息,该信息指示用户作为所有者的状态,并确认该房间已经创建(通过状态代码201)并且正在等待配置。
因此,根据文档,这样的东西应该是有效的。
jid=xmpp.protocol.JID('example@gmail.com')
cl=xmpp.Client(jid.getDomain(),debug=[])
jid = xmpp.protocol.JID('example@gmail.com')
client = xmpp.Client(jid.getDomain(), debug=[])
client.connect()
client.auth(jid.getNode(), 'my secret password')
client.send(xmpp.Presence(to='room@talk.google.com/ANick')https://stackoverflow.com/questions/11338432
复制相似问题