ejabberd MUC Ответ на запрос управления архивом
Я использую ejabberd 15.09 и включил управление архивами для каждого MUC в конфигурации сервера, как показано ниже:
mod_mam:
default: always
mod_muc:
## host: "conference.@HOST@"
access: muc
access_create: muc_create
access_persistent: muc_create
access_admin: muc_admin
default_room_options:
mam: true
persistent: true
public: true
Также проверка в админ-панели Ejabberd показывает, что сообщения архивируются, так как количество элементов в таблице архивов увеличивается после того, как каждое сообщение отправляется в MUC. Это подтверждает, что архивация включена для сеанса.
Чтобы запросить у сервера архив сообщений от MUC, я отправляю этот пакет iq:
<iq type='set' id='testid1'>
<query xmlns='urn:xmpp:mam:1'>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>urn:xmpp:mam:1</value>
</field>
<field var='with'>
<value>testmyroomnow@conference.ip/</value>
</field>
</x>
</query>
</iq>
Ответ, полученный от сервера, не содержит никаких сообщений.
<message from='user@ip' to='user@ip/Gajim'>
<fin xmlns='urn:xmpp:mam:0' complete='true'>
<set xmlns='http://jabber.org/protocol/rsm'>
<count>0</count>
</set>
</fin>
</message>
Этот MUC уже содержит некоторые сообщения, но запрос, как указано выше, не возвращает никакого сообщения. Похоже, формат xml-строфа неверен. Либо формат для отправки JID для конференции не является правильным или что-то еще.
Не уверен, что делать, так как я уже использую последнюю версию Ejabberd, которая показывает поддержку архива MUC. Кроме того, что я здесь делаю, я понятия не имею, как запросить архив MUC с сервера ejabberd.
1 ответ
Вам необходимо запросить службу MUC для архива MUC. Пользовательская служба MAM хранит сообщения только для разговора один на один.
Также обратите внимание, что вы не используете последнюю версию ejabberd. На сегодняшний день последняя версия 15.11. Я рекомендую вам использовать последнюю версию, касающуюся MAM MUC, поскольку в XEP-0313 было внесено несколько пояснений, которые были добавлены в последнюю версию ejabberd.
Вот пример запроса, отправляющий раздел запроса MAM в саму комнату MUC:
<iq type='set' id='juliet1' to='tech@conference.process-one.net'>
<query xmlns='urn:xmpp:mam:0' queryid='f27'>
<set xmlns='http://jabber.org/protocol/rsm'>
<max>10</max>
</set>
</query>
</iq>