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 Настроенная БД: mysql

Вот файл ejabberd.yml

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!" [email protected]

ошибка:

Problem 'error {bad_jid,<<"[email protected]">>}' 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}]}]

person Arpit Vaishnav    schedule 26.04.2018    source источник
comment
Нужен ответ, чтобы сделать стратегический ход от этого. Ответ как можно скорее может помочь моему проекту продвинуться вперед   -  person Arpit Vaishnav    schedule 07.06.2018


Ответы (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:[email protected]"
}

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

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

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

Изменить

На основании комментария: в OP отсутствует конфигурация mod-client-state mod-client-state< /а> конфигурация:

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

modules:
  ...
  mod_client_state:
    queue_chat_states: true
    queue_pep: false
    queue_presence: true
  ...
person tukan    schedule 17.06.2018
comment
Раздел для [email protected]/s123123 не добавляется в очередь CSI. - person Arpit Vaishnav; 18.06.2018
comment
Я получил ответ 0 и это сообщение в журналах Won't add stanza for [email protected]/s123123 to CSI queu Flushing packets of [email protected] from CSI queue of - person Arpit Vaishnav; 18.06.2018
comment
@ArpitVaishnav, вам не хватает mod_client_state вариантов. - person tukan; 18.06.2018
comment
Я добавил это, но безуспешно. Любой другой вариант? Выдает ту же ошибку CSI queu - person Arpit Vaishnav; 19.06.2018
comment
что 0 изображает в ответе API - person Arpit Vaishnav; 19.06.2018
comment
@ArpitVaishnav, вы действительно читали связанные страницы? Там вы найдете интересующую вас информацию. Вы добиваетесь успеха, но mod_client_state на самом деле экономит пропускную способность и ресурсы. - person tukan; 19.06.2018
comment
Возьми один кусок пирога с моей стороны. Готово и вычищено. Большое спасибо. Мне нужно было добавить его в команду как принадлежность владельца - person Arpit Vaishnav; 19.06.2018
comment
@ArpitVaishnav как принадлежность владельца? Вы имеете в виду владельца MUC Room? Эта ссылка может помочь вам ejabberd.im/node/4234/index.html . - person tukan; 20.06.2018