Получить историю чата в комнате по требованию
Из 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
- написать модуль для перехвата 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>