2016-08-26 4 views
1

Я разработал приложение для чата, используя XMPPframwork Robbie Hanson и Openfire. Я могу общаться друг с другом и общаться в чате. Но когда я получаю историю чата, я не могу получить целую историю. Я использую XEP-0136 в АРХИВ История:Восстановить историю чата Openfire XMPP framework

Отправить IQ:

<iq type="get" id="[email protected]"> 
    <retrieve 
     xmlns="urn:xmpp:archive" with="[email protected]"> 
     <set 
      xmlns="http://jabber.org/protocol/rsm"> 
      <max>100</max> 
     </set> 
    </retrieve> 
</iq> 

Receive:

<iq type="result" id="[email protected]" to="[email protected]/Macintosh"> 
    <chat 
     xmlns="urn:xmpp:archive" with="[email protected]" start="2016-08-23T08:42:55.777Z"> 
     <to secs="0"> 
      <body>asdf</body> 
     </to> 
     <to secs="5"> 
      <body>aafs</body> 
     </to> 
     <from secs="2" jid="[email protected]"> 
      <body>sax</body> 
     </from> 
     <set 
      xmlns="http://jabber.org/protocol/rsm"> 
      <first index="0">0</first> 
      <last>2</last> 
      <count>3</count> 
     </set> 
    </chat> 
</iq> 

Но когда я открываю базу данных, ofMessageArchive стол, я могу видеть гораздо больше сообщений с group12 (~ 20 сообщений), в то время как в результате я только получил 3. Могу ли я что-то пропустить?

+0

Вы получаете только те сообщения, которые были отправлены вами в группе? –

+0

@ShoaibAhmadGondal No. Как вы можете видеть результат, 2 из них были отправлены мной, а другой отправлен haha ​​@ macintosh – maphongba008

+1

Внедрение XEP-0136 в плагине мониторинга против вашего пакета IQ в основном собирает данные, запрашивая три таблицы: ofConversation , ofConParticipant, ofMessageArchive. Можете ли вы проверить в своих базах данных ссылки на комнату, в которой вы запрашиваете, какие данные существуют с отношениями в этих трех таблицах. Как вы уже упоминали, что данные существуют в ofMessageArchive. –

ответ

1

Выполните этот формат, он работает для меня идеально,

<iq id='a5sV8-21' type='set'> 
    <query xmlns='urn:xmpp:mam:0' queryid="12345678"> 
     <x xmlns="jabber:x:data" type="submit"> 
      <field var="FORM_TYPE" type="hidden"><value>urn:xmpp:mam:0</value></field> 
      <field var="with"><value>[email protected]</value></field> 
     </x> 
     <set xmlns="http://jabber.org/protocol/rsm"> 
      <max>message_count</max> 
     </set> 
    </query> 
</iq> 

** Если XMPP: Mam: 0 не работает Используйте XMPP: Mam: 1

+0

Awesome, он работает: D – maphongba008

+0

его не работает, я получил ошибку в ответе urn: xmpp: mam: 1 test32_5811a995837c2 @ ip-172-31-4- 183<код ошибки = тип "503" = "отмена"><сервис-недоступен Xmlns = "урна: I etf: params: xml: ns: xmpp-stanzas ">

+0

В нем говорится, что функция не включена на вашем сервере. Включите функцию, с которой она будет работать. –