首页 文章

按需获取房间聊天记录

提问于
浏览
0

从xep-0045:http://xmpp.org/extensions/xep-0045.html#enter-history用户似乎只能在他加入房间时获取房间历史信息 . 例如,用户在加入房间时可以收到20条消息 .

但是在加入房间之后,如果用户想要更多的历史消息,似乎无法实现这一目标 .

有任何想法吗?

2 回答

  • 0

    最后,我发现MAM可以满足要求http://xmpp.org/extensions/xep-0313.html#archives_user

    我可以获得其他客户端/用户的历史消息,但我仍然无法获得房间历史消息 . 我发送的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>
    
  • 0

    我已经解决了这个问题 . 有两种解决方案: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 does not work for MUC

相关问题