0

我正在尝试使用 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"

那么我做错了什么?

4

1 回答 1

0

哦,我在您的设置中发现了很多问题,只需快速浏览一下:

  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

于 2019-02-14T14:51:17.830 回答