【问题标题】:Join MUC room to become occupants of MUC room via Ejabberd API通过 Ejabberd API 加入 MUC 房间成为 MUC 房间的居住者
【发布时间】:2018-10-05 14:01:49
【问题描述】:

我正在通过 API http 向 muc room 发送消息。我观察到加入 muc room 的get_room_occupants 用户可能会这样做。

现在,从 ejabberd muc room 我发现团队成员在那里但不是团队的成员,这就是为什么显示此错误Only occupants are allowed to send messages to the conference 虽然是组成员。

是否有任何 api 可以将我连接到 muc 并在居住者中显示我?

Ejabberd 版本:17.11 安装在:ubuntu 16.04 配置数据库:mysql

Ejaberd.yml

api_permissions:
  "console commands":
    from:
      - ejabberd_ctl
    who: all
    what: "*"
  "admin access":
    who: all
    what:
      - "*"
      - "!stop"
      - "!start"
  "public commands":
    who: all
    what:
      - "*"
commands_admin_access:
  - allow:
    - user: "xxx@yy.zz"
commands:
  add_commands:
    - status
    - registered_users
    - register
    - unregister
    - get_roster
    - connected_users
    - send_stanza_c2s
    - send_stanza
    - join_cluster
oauth_expire: 3600
oauth_access: all

【问题讨论】:

  • 可以分享一下群的权限吗?
  • 我已经更新了这个问题。请看一下

标签: ejabberd ejabberd-api


【解决方案1】:

在 MUC 服务中具有管理员权限的帐户可以向任何房间发送消息,无需成为房间占用者。

例如,使用此配置:

acl:
  admin:
    user:
      - "user1@localhost"
modules:
  mod_muc:
    access_admin:
      - allow: admin

我可以执行此查询,提供一个存在的帐户和一个存在的房间,但该帐户不在该房间内:

$ ejabberdctl send_message groupchat user1@localhost room1@conference.localhost Sub Bodyyy

那个房间的住户收到消息:

<message to='user2@localhost/tka1'
    from='room1@conference.localhost'
    type='groupchat'
    id='1234779465623896577'>
  <body xml:lang='en'>Bodyyy</body>
  <subject xml:lang='en'>Sub</subject>
</message>

或者,您可以为 MUC 房间订阅一个帐户,然后该帐户可以在没有占用的情况下向该房间发送消息。例如:

$ ejabberdctl subscribe_room user2@localhost/tka1 User2 room1@conference.localhost urn:xmpp:mucsub:nodes:messages
urn:xmpp:mucsub:nodes:messages

$ ejabberdctl send_message groupchat user2@localhost room1@conference.localhost Sub Bodyyy

【讨论】:

  • 消息发送成功,但是会提示在线的用户吗?因为如果我再次打开房间,消息历史记录就在那里。连接到房间时没有
  • 我正面临 db_type 的“现在允许订阅”问题:sql default_room_options:-mam:true -allow_subscription:true access_admin:-allow:admin access_create:muc_create access_persistent:muc_create history_size:100跨度>
  • 参见 ejabberd 指南中的示例配置,默认选项不带 - 字符,例如:allow_subscription: true。这些默认选项适用于新房间,而不是已经存在的房间。
猜你喜欢
  • 2015-02-08
  • 2018-10-07
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2012-09-13
  • 2015-05-17
  • 2019-03-06
相关资源
最近更新 更多