ejabberd MUC档案管理查询回复

时间:2016-01-12 14:35:20

标签: xmpp archive 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的存档。我在这里做的其他事情,我不知道如何从ejabberd服务器查询MUC档案。

1 个答案:

答案 0 :(得分:4)

您需要查询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>