Получить историю чата в комнате по требованию

Из xep-0045: http://xmpp.org/extensions/xep-0045.html Кажется, что пользователь может получать сообщения истории комнаты, только когда он присоединяется к комнате. Например, пользователь может получить 20 сообщений при входе в комнату.

Но после того, как вы присоединились к комнате, если пользователь хочет больше сообщений истории, кажется, нет способа достичь этого.

Есть идеи?

2 ответа

Решение

Я решил эту проблему. Есть два решения: 1. Текущий ejabberd MAM не поддерживает MAM MUC. Но есть ветка, которую вы можете использовать для тестирования. Помните, что это еще не опубликовано. https://github.com/processone/ejabberd/blob/master/src/mod_mam.erl

  1. написать модуль для перехвата user_send_packet, в хуке сохранить сообщения MUC в SQL. Затем предоставьте http API для запроса сообщений MUC. С точки зрения клиента, я использую HTTP API для запроса сообщений истории MUC.

обратитесь к этой теме: ejabberd MAM не работает для MUC

Наконец, я обнаружил, что MAM может удовлетворить требование http://xmpp.org/extensions/xep-0313.html

Я могу получить другие сообщения истории клиента / пользователя, но я все еще не могу получить сообщение истории комнаты. IQ, который я отправил:

<iq type='set' id='juliet1'>
  <query xmlns='urn:xmpp:mam:0'>
    <x xmlns='jabber:x:data'>
       <field var='FORM_TYPE'>
           <value>urn:xmpp:mam:0</value>
       </field>
      <field var='with'>
         <value>roomJid@conference.host</value>
      </field>
   </x>
  </query>
</iq>
Другие вопросы по тегам