python - XMPP聊天: accessing contacts' status messages with xmppPy's Roster

标签 python chat xmpp google-talk

我正在尝试使用 xmpppy 访问我的 google talk 联系人的自定义状态消息。到目前为止我已经做到了:

import xmpp
import sys

userID   = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cba6b2a5aaa6ae8baca6aaa2a7e5a8a4a6" rel="noreferrer noopener nofollow">[email protected]</a>' 
password = 'mypassword'
ressource = 'Script'

jid  = xmpp.protocol.JID(userID)
jabber  = xmpp.Client(jid.getDomain(), debug=[])

connection = jabber.connect(('talk.google.com',5222))
auth = jabber.auth(jid.getNode(), password, ressource)

jabber.sendInitPresence(requestRoster=1)
myroster = jabber.getRoster()

名册对象 myroster 现在包含我的联系人,但不包含自定义状态消息。

myroster.getStatus('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7718191218111a0e11051e1219130437101a161e1b5914181a" rel="noreferrer noopener nofollow">[email protected]</a>')

返回无

查看“原始名册”,我可以看到资源字典是空的

u'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="93fcfdf6fcf5feeaf5e1faf6fdf7e0d3f4fcfcf4fff6fef2faffbdf0fcfe" rel="noreferrer noopener nofollow">[email protected]</a>': {'ask': None, 'resources': {}, 'name': u'Some Name', 'groups': [], 'subscription': u'both'}

奇怪的是,我今天已经让它工作了,但我的代码可能略有不同,但我无法弄清楚我到底做了什么不同......

任何帮助将不胜感激!

干杯,

马丁

最佳答案

这是我发现的一件事,当我第一次开始使用 xmpp 时,我并不清楚这一点。交友是双向的。

使用存在节
(a) 您可以“订阅”您的好友,您的好友也可以返回“已订阅”。
(b) 您的 friend 可以“订阅”您,您也可以返回“已订阅”。

如果 (a) 或 (b) 发生,您的 friend 就会出现在您的名册中。
如果 (a) 或 (b) 发生,您将出现在您的好友名册中。

但是...
除非您“订阅”您的 friend ,否则您将看不到他们的状态 - (a) 必须发生
他们不会看到您的状态,除非他们“订阅”您 - (b) 必须发生。

当您向 friend 发送“订阅”消息(在他们向您发送“订阅”消息之后)时,大多数 XMPP 客户端(pidgin、trillian 等)会自动让您将“订阅”消息发送回给您的 friend 。 XMPPPY 并不是开箱即用的。您必须对其进行编码才能执行此操作。

这可以解释为什么您看不到状态。或者,如果这不能涵盖您的情况,则可能对其他人有用。

关于python - XMPP聊天: accessing contacts' status messages with xmppPy's Roster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2381597/

相关文章:

html - 希望开发适用于 HTML5 的聊天服务器?技术可用吗?

Python gtalk 客户端代码不工作

python - 如何删除 "Tesseract Open Source OCR Engine v3.02 with Leptonica"消息

python - 仅模拟对方法的所有调用的一个子集

python - 无法在 label-studio 中添加 Ml 后端

ruby - 寻找用 Ruby 编写的 XMPP 服务器库

android - 在 Android 上使用 XMPP 实现聊天应用程序的更好方法?

python - Django源代码中的UTF8字符

javascript - Quickblox:消息已发送和阅读状态

http - 如何创建一个不由轮询驱动的聊天服务器?