我正在使用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之后存档表中元素数量的增加,邮件正在被存档。这正在验证是否已为 session 启用存档。
要从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>[email protected]/</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节的格式不正确。发送用于 session 的JID的格式不正确或其他原因。
不确定该怎么做,因为我已经在使用最新版本的Ejabberd,该版本显示为支持MUC存档。除此之外,我不知道如何从ejabberd服务器查询MUC存档。
最佳答案
您需要查询MUC服务以获取MUC存档。用户MAM服务仅存储用于一对一对话的消息。
另请注意,您没有使用最新的ejabberd。截至今天,最新版本是15.11。我建议您使用有关MAM MUC的最新版本,因为XEP-0313已作了一些澄清,并已添加到最新的ejabberd中。
这是查询示例,将MAM查询节发送到MUC session 室本身:
<iq type='set' id='juliet1' to='[email protected]'>
<query xmlns='urn:xmpp:mam:0' queryid='f27'>
<set xmlns='http://jabber.org/protocol/rsm'>
<max>10</max>
</set>
</query>
</iq>