首页 > 解决方案 > 如何将居住者/用户添加到 MUC 房间?

问题描述

MUC使用ejabberd API "create_room_with_opts". 我现在通过使用subscribe_room带有 folowwingreqresponse.

要求:

{
  "user": "vishesh@dub/dummy",
  "nick": "vish",
  "room": "roomdub@conference.dub",
  "nodes": "urn:xmpp:mucsub:nodes:messages,urn:xmpp:mucsub:nodes:affiliations,urn:xmpp:mucsub:nodes:subject,urn:xmpp:mucsub:nodes:presence"
}

回复:

[
    "urn:xmpp:mucsub:nodes:messages",
    "urn:xmpp:mucsub:nodes:affiliations",
    "urn:xmpp:mucsub:nodes:subject",
    "urn:xmpp:mucsub:nodes:presence"
]

但是当我列出它列出的居住人数为 0 时。我使用了“ get_room_occupants_number ” API,它具有以下 req 和 res。

要求:

{
    "name": "roomdub",
    "service": "conference.dub"
}

回复:

{
    "occupants": 0
}

我无法理解为什么我没有看到我添加的用户?我错过了任何一步吗?

标签: ejabberdejabberd-moduleejabberd-api

解决方案


一个账号可以是房间的“订阅者”,接收通知,也可以给房间发送消息。如https://docs.ejabberd.im/developer/xmpp-clients-bots/proposed-extensions/muc-sub/中所述

可替代地(或同时),该帐户可以是房间“占用者”,并且可以查看其他房间占用者的存在、他们如何加入和离开、接收消息、私人消息并且还可以发送它们。如https://xmpp.org/extensions/xep-0045.html中所述

所以,这句话是错误的:

我现在通过将用户订阅到房间来将用户添加到房间

您没有将用户“添加”到房间,因为毕竟我提到的任何协议中都没有定义这个概念。您正在将其“订阅”到某些房间事件。并且不会使他成为“居住者”。


推荐阅读