1

我正在构建一个监控朋友存在但不需要可见的机器人。我尝试使用所有已知值的优先级、显示、类型来设置存在,但没有成功。是否有可能是不可见的并且只接收存在通知?

谢谢!

4

4 回答 4

2

请参阅XEP-0126:隐形,第 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>
于 2012-04-14T04:41:44.120 回答
0

看看rfc。Presence 具有订阅状态。如果您的 bot 已订阅接收来自您的用户的存在,但您的用户没有,则他们不会收到有关 bot 存在的通知。

换句话说,你的机器人应该发送:

<presence to="user@example.com" type="subscribe" />

其次是用户的授权,

<presence to="bot@example.com" type="subscribed" />

现在机器人将收到用户的存在,但不是相反。

于 2012-04-13T18:52:58.453 回答
0

要设置不可见状态,您必须发送类型为“不可见”的状态。

<presence type="invisible"/>

这是代码(在ios中):

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

我使用此代码将我的状态设置为“不可见”。有关更多详细信息,请阅读http://xmpp.org/extensions/xep-0018.html#sect-id86210上的文档

于 2012-11-08T06:13:02.233 回答
0

最后我从 Facebook 知道,不可能通过 XMPP 命令实现隐形: https ://developers.facebook.com/bugs/315067461919373 。另请参阅限制下的https://developers.facebook.com/docs/chat/

于 2013-02-15T16:47:53.683 回答