首页 > 解决方案 > 查询MUC房间归档消息

问题描述

我正在使用 ejabberd 18.01 开发聊天应用程序

在检索 MUC 房间消息时,有什么方法可以找到消息所有者 jid?

<x xmlns="http://jabber.org/protocol/muc#user"><item jid="romeo@lit.com/desktop"/></x>

以上 xml 是房间管理员检索消息时消息 xml 的一部分,但所有者为房间其他参与者的消息不包含 x 标记。

标签: erlangxmppejabberd

解决方案


所有者是房间其他参与者的消息,不包含 x 标签。

仔细阅读https://xmpp.org/extensions/xep-0313.html#business-storeret-muc-archives中的这一段

在非匿名房间的情况下,或者如果 MUC 档案的接收者有权在查询时访问发送者的真实 JID,档案消息将使用由 ' http:/限定的元素中的扩展消息信息。 /jabber.org/protocol/muc#user '命名空间并包含一个具有 'jid' 属性的子级,该属性指定占用者的完整 JID,如多用户聊天 (XEP-0045) [10] 中为非匿名房间存在所定义的那样。

实际上,这意味着您必须配置房间并设置此选项:

将真实的 Jabber ID 呈现给:任何人

或者,如果您希望在所有新房间中使用此功能,请在 ejabberd.yml 中进行配置

modules:
  mod_muc:
    default_room_options:
      anonymous: false

推荐阅读