0

我正在使用原型测试程序检查 XMPP Facebook 聊天 X-FACEBOOK 的功能。使用带有 Gmail 服务器的 geoloc 消息 XEP 0080 效果很好,但是当我尝试通过 X-FACEBOOK 发送相同的 XML 结构时,它会修剪消息并删除 GeoLoc 节点。我想问是否有人知道是否可以在 X-FACEBOOK 中发送 XEP 0080 消息,如果可以,我应该使用什么结构,以便 Facebook Chat XMPP 服务器不会修剪 GeoLoc 信息。

发送 XMPP geoloc 消息:

<message to="-100002578491827@chat.facebook.com" from="4yony4@chat.facebook.com/19256ca9_4C5CC12947646" type="chat" xml:lang="en">
<event xmlns="http://jabber.org/protocol/pubsub#event">
     <items node="http://jabber.org/protocol/geoloc">
          <item id="">
              <geoloc xmlns="http://jabber.org/protocol/geoloc">
                   <lat>40.488137</lat>
                   <lon>-3.397623</lon>
                   <timestamp>2012-07-27 09:09:50 GMT</timestamp>
                   <msgType>0</msgType>
              </geoloc>
          </item>
      </items>
</event>
<body> 

</body>

客户端收到的消息:

<message xmlns="jabber:client" from="-1177157556@chat.facebook.com" to="" type="chat">
    <active xmlns="http://jabber.org/protocol/chatstates"/>
 <body></body>
</message>

任何解决方案或意见将不胜感激。


好吧,将 XML 更改为类似于您发布的那个,没有 pub sub,但仍然是同样的问题,接收者收到的消息缺少 GeoLoc 节点下的所有命名空间,我认为这是服务器不支持的结果格式。我可以尝试使用 IQ 订阅者选项,事情是我更喜欢找到一个可以直接将信息发送给用户的解决方案。如果有可能,即使是很小的一个,我也可以在 Facebook 服务器中从用户 A 向用户 B 发送有关 GeoLoc 的信息,这可能会有很大帮助,如果不是很好,我想我将不得不接受它。顺便说一句,谢谢帮助。

4

3 回答 3

1

当我测试 facebook XMPP 连接时,它几乎不支持任何扩展并阻止服务器上的任何自定义标签。它能够发送基本的存在、基本的消息、电子名片,这就是它所能做的一切。

Pubsub 事件应该发送到服务。现代 XMPP 服务器也支持 PEP 扩展,您可以将 pubsub 发送到服务器本身。在其他情况下,请按照 Robin 的建议使用与目标用户的消息。

我不认为 facebook 有任何带有 pubsub 的服务器。另外我认为它仍然会过滤任何不受支持的命名空间。随意证明我错了,距离我上次测试它已经一年多了。

于 2012-07-30T17:33:23.587 回答
0

这些不是同一个消息。

收到的消息只是用户聊天状态的指示器,如XEP-0085中所定义,与您发送的消息没有直接关系。这并不意味着第一个没有潜在地触发第二个,您使用的任何库都可能在您发送消息时发送了聊天状态。这种类型的消息通常用于聊天客户端,表示您正在与之聊天的人正在输入消息。

问题可能在于您发送的消息实际上是PEP 消息。这意味着由服务器中的 PEP 服务发送,而不是从客户端发送。我不知道 Facebook 是否支持 PEP,但我猜想由于您对已知名称空间的错误使用,它被过滤掉了。PEP 或 Pubsub 是发布地理位置信息的推荐方式,但要使用这些方式,您必须向服务发送 IQ 数据包,而不是向其他客户端发送消息。

试试这个(不是说它会起作用,但至少 pubsub 的东西被剥离了):

<message to="-100002578491827@chat.facebook.com" from="4yony4@chat.facebook.com/19256ca9_4C5CC12947646" type="chat" xml:lang="en">
   <geoloc xmlns="http://jabber.org/protocol/geoloc">
      <lat>40.488137</lat>
      <lon>-3.397623</lon>
      <timestamp>2012-07-27 09:09:50 GMT</timestamp>
      <msgType>0</msgType>
   </geoloc>
   <body> 
   </body>
</message>
于 2012-07-27T16:08:56.177 回答
0

我想要第二个 Pihhan。Facebook XMPP 服务器似乎将消息重组为仅包含消息正文、日期和时间戳。我认为他们这样做是为了使其与评论图对象保持一致。

这很烦人,但我怀疑这是故意的。毕竟,他们的 Graph 是主要问题,而不是 XMPP。

于 2013-11-10T21:37:57.053 回答