我试图用xmppy访问我的googletalk联系人的自定义状态消息。我已经做到了:
import xmpp
import sys
userID = 'myname@gmail.com'
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现在包含我的联系人,但不包括自定义状态消息。在
^{pr2}$不返回
查看“原始花名册”,我可以看到资源字典是空的
u'oneofmyfriends@googlemail.com': {'ask': None, 'resources': {}, 'name': u'Some Name', 'groups': [], 'subscription': u'both'}
奇怪的是,我今天已经让它工作了,但我的代码可能有点不同,但我不知道我到底做了什么不同。。。在
任何帮助将不胜感激!在
干杯
马丁
这是时间问题。添加处理程序:
连接之前。然后确保在循环中调用
jabber.Process()
。问题是,对于代码,您有时会在查看花名册对象之前收到状态节,有时会在查看之后收到状态节。在这是我发现的一件事,当我第一次开始使用xmpp时,我并不清楚。友谊是双向的。在
使用状态节
(a) 您可以“订阅”您的朋友,您的朋友可以返回“已订阅”。
(b) 你的朋友可以“订阅”你,你可以返回“订阅”。在
如果发生(a)或(b)事件,您的朋友将出现在您的花名册中。
如果(a)或(b)发生了,你将在你的朋友名册中。在
但是…
除非您“订阅”您的朋友—(a)必须发生
他们不会看到你的状态,除非他们“订阅”你—(b)必须发生。在
大多数XMPP客户机(pidgin、trillian等)在您发送“subscribed”时(在他们向您发送“subscribe”之后)会自动让您将“subscribe”发送回您的朋友。xmppy并不是开箱即用的。你必须对它进行编码。在
这可以解释为什么你看不到状态。或者如果这不包括你的情况,它可能会给其他人提供信息。在
相关问题 更多 >
编程相关推荐