【问题标题】:Ejabberd trying to subscribe a user through apiEjabberd 尝试通过 api 订阅用户
【发布时间】:2019-07-07 11:10:15
【问题描述】:

我正在尝试使用 Ejabberd API 为测试用户订阅测试室。我确定我只是错误地配置了一些东西,但我似乎找不到问题所在。 我正在运行 Ejabberd 16.09 并尝试使用 mod_http_api

我的配置如下:

hosts:
  - "localhost"
  - "my.personal.host"

listen:
  -
    port: 5285
    module: ejabberd_http
    request_handlers:
      "/api": mod_http_api

acl:
  admin:
     user:
       - "@localhost"

modules:
  mod_muc:
    mam: true
    default_room_options:
      allow_subscription: true
    access:
      - allow
    access_admin:
      - allow: admin
    access_create: muc_create
    access_persistent: muc_create
  mod_muc_admin: {}
  mod_http_api:
    admin_ip_access: admin_ip_access_rule

api_permissions:
  "API used from localhost allows all calls":
    - who:
      - ip: "127.0.0.1/8"
    - what:
      - "*"
      - "!stop"
      - "!start"

access:
  admin_ip_access_rule:
    admin:
      - create_room
      - register
      - subscribe_room

我确实通过 api 成功创建了一个用户 test1 和一个房间 testroom1。然后我尝试通过带有 curl 的 POST 为用户订阅该朗姆酒:

curl -X POST -H "Cache-Control: no-cache" -d '{"user":"test1@my.personal.host/something","nick":"test1","room":"testroom1@my.persoal.host","nodes":"urn:xmpp:mucsub:nodes:messages"}' "http://localhost:5285/api/subscribe_room"

但我得到了这样的回应:

"Subscriptions are not allowed"

那我做错了什么?

【问题讨论】:

    标签: ejabberd multiuserchat ejabberd-api


    【解决方案1】:

    哦,我一看你的设置就发现了很多问题:

    1. 据我所知,mod_muc 没有名为“mam”的选项
    2. 在通话中,房间属性为 persoal 时出现拼写错误。
    3. 另外,房间 JID 不能是“testroom1@my.persoal.host”,可能是“testroom1@conference.my.personal.host”之类的东西

    尝试使用用户创建房间,然后检查其配置是否正确(允许订阅),然后尝试使用其他帐户订阅。这个电话对我有用:

    $ ejabberdctl subscribe_room test2@my.personal.host Test2 testroom1@conference.my.personal.host urn:xmpp:mucsub:nodes:messages

    【讨论】:

    • 哇,真尴尬。猜猜所有玩不同配置的东西让我对这些错误视而不见。关于 1.:也许我从文档中弄错了。我想我记得某处说我必须专门为房间激活 mam,以便订阅用户在执行 mam 请求时与所有其他人一起在离线时检索房间中发送的消息。关于 2.:那不是我正在使用的实际主机。所以我猜我是否正确更改它并没有注意
    • 关于 3.: 我不知道。我知道它在示例中以类似的方式使用,但我认为这是你可以做的事情,而不是你必须做的事情。
    • 好的,我测试了它,它现在可以工作了 (3) 是问题所在。非常感谢
    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 2017-10-16
    • 2018-11-13
    • 2013-12-14
    • 1970-01-01
    • 2019-06-23
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多