0

プロトタイプのテスト プログラムを使用して、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サブなしで、それでも同じ問題です.受信者で受信したメッセージには、GeoLocノードの下のすべての名前空間がありません.これは、サーバーがそれをサポートしていないためだと思います.フォーマット。私は IQ サブスクライバー オプションを試すことができます。ユーザーに情報を直接送信できるソリューションを見つけたいと思っています。可能性がある場合、GeoLoc に関する情報を Facebook サーバーでユーザー A からユーザー B に送信できる小さなものであっても、大きな助けになるかもしれません。ところで助けてくれてありがとう。

4

3 に答える 3

1

Facebook の XMPP 接続をテストしていたとき、拡張機能はほとんどサポートされておらず、サーバー上のカスタム タグはすべてブロックされていました。基本的なプレゼンス、基本的なメッセージ、vcard を送信することができ、それがほぼすべての機能でした。

Pubsub イベントはサービスに送信する必要があります。最新の XMPP サーバーは PEP 拡張もサポートしており、サーバー自体に pubsub を送信できます。それ以外の場合は、Robin がアドバイスしたように、ターゲット ユーザーにメッセージを使用します。

Facebookにはpubsubを備えたサーバーはないと思います。また、サポートされていない名前空間はまだフィルタリングされていると思います。私が間違っていることを証明してください。最後にテストしてから1年以上経ちます。

于 2012-07-30T17:33:23.587 に答える
0

これらは同じメッセージではありません。

受信したメッセージは、 XEP-0085で定義されているように、単にユーザーのチャット状態を示すものであり、送信したメッセージとは直接関係ありません。これは、最初のメッセージが 2 番目のメッセージを潜在的にトリガーしなかったという意味ではありません。メッセージを送信したときに、使用しているライブラリがチャット状態も送信した可能性があります。このタイプのメッセージは、チャット相手がメッセージを入力していることを示すためにチャット クライアントでよく使用されます。

問題はおそらく、送信しているメッセージが実際には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

ピハンを2位にしたい。Facebook XMPP サーバーは、メッセージの本文、日付、およびタイムスタンプのみを含むようにメッセージを再構築しているようです。コメントグラフオブジェクトと同一に保つためにそうしていると思います。

迷惑ですが、意図的なものだと思います。結局のところ、XMPP ではなくグラフが主な問題です。

于 2013-11-10T21:37:57.053 に答える