我正在用Python写一个XMPP机器人(使用xmpppy)。我想(在用户的请求之后)检查他的PubSub状态(情绪,调整)并用它做一些事情。我该怎么做?
我知道如何解析用户在更改状态时发送的节,但我不知道如何强迫他向我发送这样的节。
答案 0 :(得分:3)
阅读XEP-163。基本上,您需要实现实体上限(XEP-115)的发送方,以便您像这样发送您的存在:
<presence from='romeo@example.net/home'>
<c xmlns='http://jabber.org/protocol/caps'
hash='sha-1'
node='http://example.com/MYBOT'
ver='/FpawanrJ31ymsv4ApCMGcyJmUk='/>
</presence>
当您收到像这样的迪斯科#info请求时:
<iq to='romeo@example.net/home'
id='disco1'
from='example.net'
type='get'>
<query xmlns='http://jabber.org/protocol/disco#info'
node='http://example.com/MYBOT#/FpawanrJ31ymsv4ApCMGcyJmUk='/>
</iq>
您回复了您实施的功能列表:
<iq from='romeo@example.net/home'
id='disco1'
to='example.net'
type='result'>
<query xmlns='http://jabber.org/protocol/disco#info'
node='http://example.com/MYBOT#/FpawanrJ31ymsv4ApCMGcyJmUk='>
<identity category='client' type='bot' name='MYBOT'/>
<feature var='http://jabber.org/protocol/mood+notify'/>
<feature var='http://jabber.org/protocol/tune+notify'/>
</query>
</iq>
向要隐式订阅的每个节点名称添加+ notify,并将结果字符串添加为功能,如上所述。确保出站状态中的SHA-1哈希是正确的是唯一困难的部分。