ejabberd API пригласить в комнату MUC

Я работаю над API ejabberd, чтобы пригласить пользователей в комнату MUC. У меня есть настройка OAuth для API.

я протестировал oauth с get_room_occupants и его работа в порядке.

теперь, я пытаюсь получить доступ к /api/send_direct_invitation, но согласно журналам, у меня нет разрешения на доступ к этому api

Я создал oauth с командной строкой ejabberdctl oauth_issue_token admin@host 31540000 "ejabberd:admin"

мне нужно передать какие-либо дополнительные разрешения

Версия Ejabberd: 17.11 установленных на: ubuntu 16.04 Configuered ДБ: mysql

здесь

api_permissions:
  "console commands":
    from:
      - ejabberd_ctl
    who: all
    what: "*"
  "admin access":
    who:
      - access:
          - allow:
            - user: admin@host
      - oauth:
        - scope: "ejabberd:admin"
        - access:
          - allow:
            - user: admin@host
    what:
      - "*"
      - "!stop"
      - "!start"
  "public commands":
    who:
      - ip: "127.0.0.1/8"
    what:
      - "status"
      - "connected_users_number"
commands_admin_access:
  - allow:
    - user: "admin@host"
commands:
  add_commands:
    - status
    - registered_users
    - register
    - unregister
    - get_roster
    - connected_users
    - send_stanza_c2s
    - send_stanza
    - join_cluster
    - send_direct_invitation
oauth_expire: 3600
oauth_access: all

Я попытался запустить это через командную строку и получил эту ошибку

: ejabberdctl send_direct_invitation naviteam1519 conference.xxx.yyy.com "" "You need this room!" KESH2FABDE@xxx.yyy.com

ошибка:

Problem 'error {bad_jid,<<"KESH2FABDE@xxx.yyy.com">>}' occurred executing the command.
Stacktrace: [{jid,decode,1,[{file,"src/jid.erl"},{line,138}]},
         {mod_muc_admin,'-get_users_to_invite/2-fun-1-',2,
                        [{file,"src/mod_muc_admin.erl"},{line,840}]},
         {lists,filtermap,2,[{file,"lists.erl"},{line,1317}]},
         {mod_muc_admin,send_direct_invitation,5,
                        [{file,"src/mod_muc_admin.erl"},{line,826}]},
         {ejabberd_ctl,call_command,4,
                       [{file,"src/ejabberd_ctl.erl"},{line,352}]},
         {ejabberd_ctl,try_call_command,4,
                       [{file,"src/ejabberd_ctl.erl"},{line,321}]},
         {ejabberd_ctl,process2,4,
                       [{file,"src/ejabberd_ctl.erl"},{line,271}]},
         {ejabberd_ctl,process,2,
                       [{file,"src/ejabberd_ctl.erl"},{line,249}]}]

1 ответов


вы не показали нам свой ejabberdctl send_direct_invitation команда и журналы.

Я думаю, что вы не имеете правильный формат команды:

С send_direct_invitation api это должно выглядеть так:

POST /api/send_direct_invitation
{
  "name": "room1",
  "service": "muc.example.com",
  "password": "",
  "reason": "Check this out!",
  "users": "user2@localhost:user3@example.com"
}

тогда пример будет выглядеть так:

ejabberdctl send_direct_invitation aRoom conference.localhost "" "You need this room!" msg_test1@localhost

Что касается вашего . Вы уверены, что у вас есть: admin@host пользователей? Разве это не для тебя? admin@localhost?

редактировать

на основе комментария: OP отсутствует mod-client-state настройки mod-состояние клиента конфигурация:

пример конфигурации:

modules:
  ...
  mod_client_state:
    queue_chat_states: true
    queue_pep: false
    queue_presence: true
  ...