Xmpp聊天隐形存在

时间:2012-04-13 12:49:48

标签: xmpp facebook-chat

我正在构建一个监视朋友在场但不需要可见的机器人。 我试图使用优先级,show,类型设置存在所有知识值,但没有成功。 是否可能是无形的,只是接收在线状态通知?

谢谢!

4 个答案:

答案 0 :(得分:2)

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>

答案 1 :(得分:0)

查看rfc。 Presence具有订阅状态。如果您的机器人订阅了您的用户,但您的用户不是,则不会通知机器人的存在。

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

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

然后是用户的授权,

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

现在机器人将从用户那里获得存在,但不是相反。

答案 2 :(得分:0)

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

<presence type="invisible"/>

这是代码(在ios中):

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

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

上的文档

答案 3 :(得分:0)

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