2012-04-13 134 views
1

我正在構建一個監視好友存在的bot,但不需要可見。 我試圖使用優先級設置存在,顯示,鍵入所有知識值,但沒有成功。 可能是隱形眼鏡,只是收到存在通知?Xmpp聊天隱形存在

謝謝!

回答

0

看看rfc。 Presence具有訂閱狀態。如果您的機器人訂閱了您的用戶,但您的用戶不在,他們將不會被通知該機器人的存在。

換句話說,你的機器人應該派:

<presence to="[email protected]" type="subscribe" /> 

其次是用戶的授權,

<presence to="[email protected]" type="subscribed" /> 

現在,機器人將收到來自存在用戶,而不是相反。

+0

我已經做了一些訂閱的實驗,但它似乎Facebook不支持它,因爲我的訂閱被忽略,我從來沒有收到訂閱請求 – 2012-04-14 12:01:29

+0

我害怕我的或喬的解決方案將與Facebook一起工作,如果他們做不支持它。 – ggozad 2012-04-14 15:28:03

2

XEP-0126: Invisibility,3.1節:

<iq from='[email protected]/shire' type='set' id='inv1'> 
    <query xmlns='jabber:iq:privacy'> 
    <list name='invisible'> 
     <item action='deny' order='1'> 
     <presence-out/> 
     </item> 
    </list> 
    </query> 
</iq> 
+0

好啊,我不知道這個存在! – ggozad 2012-04-14 09:01:23

+0

Unfortunaly我估計是不支持 <錯誤代碼= 「503」 型= 「取消」> <服務不可用的xmlns = 「甕:IETF:PARAMS:XML:NS:XMPP協議,敘述」/> – 2012-04-14 11:35:26

+0

使用更好的服務器:http://xmpp.org/xmpp-software/servers/ – 2012-04-16 16:47:13

0

要成爲無形,你必須返回類型爲 「隱形」 存在設置狀態。

<presence type="invisible"/> 

這裏是代碼(IOS):

XMPPPresence *presence = [XMPPPresence presenceWithType:@"invisible"]; 
[[self xmppStream] sendElement:presence]; 

我用這個代碼來設置我的狀態爲 「無形」。 欲瞭解更多詳情,請上http://xmpp.org/extensions/xep-0018.html#sect-id86210

+1

請注意,XEP-0018已被XMPP委員會拒絕,不應在一般XMPP客戶端(http://xmpp.org/extensions/xep-0018.html)中實施。正如Joe Hildebrand所建議的,通過XEP-0126的隱私清單是推薦的方法。 – 2013-02-15 16:46:46