2009-12-31 68 views
0

我正在Python中編寫一個XMPP機器人(使用xmpppy)。我想(根據用戶的請求)檢查他的PubSub狀態(心情,調整)並對它做些什麼。我怎麼做?如何使用Python的xmpp查詢其PubSub的聯繫人?

我知道如何時,他改變狀態,但我不知道怎麼逼他給我這樣的節解析由用戶發送節。

回答

3

閱讀XEP-163。從本質上講,你需要實現實體帽(XEP-115)的發送端,讓你發送你這樣的存在:

<presence from='[email protected]/home'> 
    <c xmlns='http://jabber.org/protocol/caps' 
    hash='sha-1' 
    node='http://example.com/MYBOT' 
    ver='/FpawanrJ31ymsv4ApCMGcyJmUk='/> 
</presence> 

當你得到這樣一個disco#info請求:

<iq to='[email protected]/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='[email protected]/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> 

添加+通知要含蓄地訂閱到每個節點的名稱,並添加生成的字符串作爲特徵, 如上。確保出站狀態下的SHA-1散列正確是唯一難以解決的問題。

+0

不正是我的意思,但你的答案指向我,我想要的東西不能做)和我公司開發的機器人的其他方式。謝謝。 – minder 2010-01-05 09:43:31

相關問題