Ejabberd пытается подписать пользователя через API - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь подписать тестового пользователя на тестовую комнату, используя 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

Я успешно создал пользовательский test1 и комнату testroom1 через API.Затем я пытаюсь подписать пользователя на этот ром с помощью POST с curl:

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"

Так что я делаю не так?

1 Ответ

0 голосов
/ 14 февраля 2019

Оо, я обнаружил так много проблем в вашей установке, просто взглянув:

  1. Из того, что я знаю, у mod_muc нет опции с именем 'mam'
  2. В вызове у атрибута room есть орфографическая ошибка, когда он говорит 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: node: messages

...