【问题标题】:how to add occupants/users to a MUC room?如何将居住者/用户添加到 MUC 房间?
【发布时间】:2018-11-07 22:46:17
【问题描述】:

我使用ejabberd API "create_room_with_opts" 创建了一个持久的MUC 房间。我现在通过使用带有以下reqresponse 的“subscribe_room”API 将用户订阅到房间来将用户添加到房间。

请求:

{
  "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
}

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

【问题讨论】:

    标签: ejabberd ejabberd-module ejabberd-api


    【解决方案1】:

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

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

    所以,这句话是错误的:

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

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

    【讨论】:

    • 嗨@Badlop,我怎样才能让用户说'XYZ',房间1的占用者?请解释一下。
    • 客户在加入房间时成为房间的占用者。管理员没有 ejabberd 命令可以执行此操作。这只能由客户端完成,遵循 XEP xmpp.org/extensions/xep-0045.html#enter
    • 是的,我确实发送了出席信息,但是当用户下线时,该用户会从房间的占用者列表中删除,并且不再添加。你能帮我做同样的事情吗?
    • 当客户断开连接时,它会离开他所在的所有房间。当客户端再次连接时,他可以再次加入这些房间。那是客户的事。例如,Tkabber 有一个“自动加入”功能。
    • 是的,做到了。无论如何,非常感谢你
    猜你喜欢
    • 2018-10-05
    • 2015-02-08
    • 2021-11-04
    • 2019-02-25
    • 2019-03-06
    • 2017-04-21
    • 2013-09-04
    • 2015-05-17
    • 2011-10-10
    相关资源
    最近更新 更多