友達の存在を監視するボットを構築していますが、表示する必要はありません。私はpriority、show、typeをすべての既知の値で使用してプレゼンスを設定しようとしましたが、成功しませんでした。目に見えず、プレゼンス通知を受け取る可能性はありますか?
ありがとう!
友達の存在を監視するボットを構築していますが、表示する必要はありません。私はpriority、show、typeをすべての既知の値で使用してプレゼンスを設定しようとしましたが、成功しませんでした。目に見えず、プレゼンス通知を受け取る可能性はありますか?
ありがとう!
XEP-0126:Invisibility、セクション3.1を参照してください。
<iq from='bilbo@tolkien.lit/shire' type='set' id='inv1'>
<query xmlns='jabber:iq:privacy'>
<list name='invisible'>
<item action='deny' order='1'>
<presence-out/>
</item>
</list>
</query>
</iq>
rfcを見てください。プレゼンスにはサブスクリプション ステータスがあります。ボットがユーザーからのプレゼンスを受信するようにサブスクライブされているが、ユーザーがサブスクライブされていない場合、ボットのプレゼンスはユーザーに通知されません。
つまり、ボットは以下を送信する必要があります。
<presence to="user@example.com" type="subscribe" />
ユーザーの承認が続きます。
<presence to="bot@example.com" type="subscribed" />
これで、ボットはユーザーからプレゼンスを受け取りますが、その逆は受け取りません。
最後に Facebook から知ったのですが、XMPP コマンドを使用して非表示を実装することはできません: https://developers.facebook.com/bugs/315067461919373。制限の下のhttps://developers.facebook.com/docs/chat/も参照してください。
非表示になるステータスを設定するには、「非表示」タイプのプレゼンスを送信する必要があります。
<presence type="invisible"/>
そして、ここにコードがあります(iosで):
XMPPPresence *presence = [XMPPPresence presenceWithType:@"invisible"];
[[self xmppStream] sendElement:presence];
このコードを使用して、ステータスを「非表示」に設定します。詳細については、 http: //xmpp.org/extensions/xep-0018.html#sect-id86210のドキュメントをお読みください。