如何使用 xmpppy 向 jabber 客户端发送消息?

Posted

技术标签:

【中文标题】如何使用 xmpppy 向 jabber 客户端发送消息?【英文标题】:How to send message using xmpppy to a jabber client? 【发布时间】:2012-06-26 07:54:10 【问题描述】:

我必须发送基于 xmpp 的聊天客户端 (hipchat),为此我使用 xmpp.py。现在,我正在尝试从 shell 发送消息。以下是我从 shell 执行的语句:

>>> import xmpp
>>> jid = xmpp.protocol.JID('99999_9999@chat.hipchat.com')
>>> cl=xmpp.Client(jid.getDomain(),debug=[])
>>> cl.connect()
'tls'
>>> cl.auth(jid.getNode(),'password')
'sasl'
>>> cl.send(xmpp.protocol.Message('99999_9999@chat.hipchat.com','hey!'))
'3'

我使用相同的 jabber id 进行身份验证和作为接收者。我也在聊天室在线,但我没有收到任何消息。缺少什么?

【问题讨论】:

【参考方案1】:

一些较旧的 XMPP 服务器需要初始状态。 在cl.send 之前使用以下调用发送状态:

cl.SendInitPresence(requestRoster=0)

另见 xmpppy 主页中的 xsend 示例: http://xmpppy.sourceforge.net/examples/xsend.py

【讨论】:

【参考方案2】:

我缺少typ 参数。添加它的值chat 解决了这个问题:

cl.send(xmpp.protocol.Message('99999_9999@chat.hipchat.com','hey!', typ='chat'))

【讨论】:

以上是关于如何使用 xmpppy 向 jabber 客户端发送消息?的主要内容,如果未能解决你的问题,请参考以下文章

向所有连接的客户端/资源发送 xmpp 消息

Jabber 机器人的在线状态

如何使用 xmpp 和 Python xmpppy 发送多播消息(多个用户)(XEP-0033:扩展节寻址)

如何使用 xmpppy 向聊天室发送消息?

使用 xmpppy 时完整的 JID 值在哪里?

ec服务器怎么发消息