2012-07-27 95 views
0

我正在使用原型測試程序檢查XMPP Facebook聊天功能,X-FACEBOOK。它使用geoloc消息XEP 0080和Gmail服務器運行良好,但是當我嘗試通過X-FACEBOOK發送相同的XML結構時,它會修剪消息並刪除GeoLoc節點。 我想問問,如果有人知道它是否可能在X-FACEBOOK中發送XEP 0080消息,並且如果有的話,我應該使用哪種結構,以便Facebook聊天XMPP服務器不會修剪GeoLoc信息。Facebook聊天(XMPP)XEP 0080支持

發送XMPP geoloc消息:

<message to="[email protected]" from="[email protected]/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="[email protected]" to="" type="chat"> 
    <active xmlns="http://jabber.org/protocol/chatstates"/> 
<body></body> 
</message> 

任何溶液或意見將不勝感激。


好了,改變了XML類似於您發佈的一個,沒有酒館子了,還是同樣的問題,在收件人收到消息缺乏所有GeoLoc節點下的命名空間,我認爲這是一個服務器的結果不支持該格式。我可以嘗試使用IQ訂戶選項,事情是我更喜歡找到一種解決方案,我可以直接將信息發送給用戶。 如果有可能,即使是我可以在Facebook服務器上發送有關從用戶A到用戶B的GeoLoc的信息的一個小問題,它可能會有很大的幫助,如果不是很好,我想我將不得不接受它。 Thx幫忙BTW。

回答

0

這些是不一樣的消息。

收到的消息只是XEP-0085中定義的用戶聊天狀態的指示符,與您發送的消息沒有直接關係。這並不意味着第一個可能會觸發第二個,無論你使用的是什麼圖書館,當你發送信息時都可能發送了聊天狀態。這種類型的消息通常用於聊天客戶端,以表明您正在與之聊天的某人正在輸入消息。

問題可能是您發送的消息實際上是PEP message。這意味着由服務器中的PEP服務發送,而不是來自客戶端。我不知道Facebook是否支持PEP,但是我猜想由於你錯誤地使用了一個已知的命名空間,它會被過濾掉。 PEP或Pubsub是發佈地理位置信息的推薦方式,但要利用那些必須向服務發送IQ數據包的消息,而不是向其他客戶端發送消息。

試試這個(不是說這會工作,但至少PubSub的東西已被剝離):

<message to="[email protected]" from="[email protected]/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> 
1

當我正在測試Facebook的XMPP連接,它不支持幾乎所有的擴展和封鎖任何自定義服務器上的標籤。它能夠發送基本的存在,基本信息,電子名片,而且這是它所能做的一切。

Pubsub事件應發送到服務。現代XMPP服務器也支持PEP擴展,您可以將pubsub發送到服務器本身。在其他情況下,請按照Robin的建議,將消息與目標用戶一起使用。

我不認爲facebook有pubsub任何服務器。此外,我認爲它仍然過濾任何不支持的名稱空間。隨時可以證明我是錯的,自從我上次測試以來,這已經超過一年了。

0

我想第二Pihhan。 Facebook XMPP服務器似乎將消息重構爲僅包含消息正文,日期和時間戳。我認爲他們這樣做是爲了保持它與評論圖形對象相同。

這很煩人,但我懷疑這是故意的。畢竟,他們的Graph是主要問題,而不是XMPP。