【问题标题】:Facebook Chat (XMPP) XEP 0080 supportFacebook 聊天 (XMPP) XEP 0080 支持
【发布时间】:2012-07-25 23:02:37
【问题描述】:

我正在使用原型测试程序检查 XMPP Facebook 聊天 X-FACEBOOK 的功能。使用带有 Gmail 服务器的 geoloc 消息 XEP 0080 效果很好,但是当我尝试通过 X-FACEBOOK 发送相同的 XML 结构时,它会修剪消息并删除 GeoLoc 节点。 我想问是否有人知道是否可以在 X-FACEBOOK 中发送 XEP 0080 消息,如果可以,我应该使用什么结构,这样 Facebook 聊天 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 的信息,这可能会有很大帮助,如果不是很好,我想我将不得不接受它。 顺便说一句,谢谢帮助。

【问题讨论】:

    标签: xmpp facebook-chat x-facebook-platform


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        这些不是同一条消息。

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

        问题可能是您发送的消息实际上是PEP message。这意味着由服务器中的 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>
        

        【讨论】:

          猜你喜欢
          • 2013-02-09
          • 2013-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-16
          • 2013-01-31
          • 2015-09-06
          相关资源
          最近更新 更多