Как создать чат в ejabberd через rest API?

Я знаю, что могу создать чат в ejabberd с помощью команды

ejabberdctl create_room room_name muc_service xmpp_domain

и я могу отправлять приглашения пользователям с помощью команды

ejabberdctl send_direct_invitation room_name password reason jid1[:jid2]

Может ли кто-нибудь сказать мне, как сделать то же самое, используя ejabberd rest api?

Я использую oauth для аутентификации.

Я сделал следующую конфигурацию в файле ejabberd.yml

port: 5280 module: ejabberd_http request_handlers: "/websocket": ejabberd_http_ws "/log": mod_log_http "/oauth": ejabberd_oauth "/api": mod_http_api web_admin: true http_bind: true register: true captcha: true commands_admin_access: configure commands: - add_commands: - user - status oauth_expire: 3600 oauth_access: all

а также включил mod_muc_admin в файле ejabberd.yml, используя

modules: mod_muc_admin: {}


person Ankit    schedule 23.07.2016    source источник


Ответы (2)


Используйте модуль mod_restful для доступа к ejabberd через API. Вам нужно настроить следующие строки в ejabberd.yml, если вы хотите получить доступ к этому модулю.

mod_restful:
api:
  - path: ["admin"]
    module: mod_restful_admin
    params:
      key: "secret"
      allowed_commands: [register, unregister,status, add_rosteritem, create_room, send_direct_invitation, set_room_affiliation]
  - path: ["register"]
    module: mod_restful_register
    params:
      key: "secret"

Это команды, которые объявлены в allow_commands, только те команды доступны через API. Поэтому в будущем, если вы хотите получить доступ к любым другим командам, вам нужно будет добавить сюда.

как только вы закончите добавлять, перезапустите ejabberd, и вы сможете получить доступ к API либо с помощью postman, либо с помощью curl

/* 
            Data that need to be sent for creating group.

            Url : example.com:8088/api/admin/
            Content-Type: application/json

            {"key": "secret","command": "create_room","args": ["group1","conference.example.com","example.com"]}


*/

Аналогично этому попробуйте и для send_direct_invitation...

person Mani Kandan    schedule 25.07.2016
comment
где я должен написать эти настройки, то есть в модулях или где-то еще в файле ejabberd.yml. Далее, что означает этот ключ: секрет, должен ли я отправить его как есть, на самом деле я использую oauth, так как я могу использовать его здесь. - person Ankit; 25.07.2016
comment
вам нужно добавить это в ejabberd.yml в разделе модулей, а ключ используется для аутентификации, чтобы узнать, обращается ли нужный человек к этому порту. Вы можете изменить значение ключа, изменив значение в ejabberd.yml. - person Mani Kandan; 25.07.2016
comment
@ManiKandan, какую версию ejabberd вы использовали с приведенной выше конфигурацией? - person Jubayer Arefin; 14.12.2016
comment
версия ejabberd 16.04.43 - person Mani Kandan; 15.12.2016

Чтобы сделать запрос API для создания комнаты,

Сделай завивку,

curl -X POST -H "Cache-Control: no-cache" -d '{ "name": "aaaaa", "service": "bbbbb", "host": "ccccc" }' "http://localhost:5280/api/create_room"

Или, если вы хотите добавить несколько комнат за один раз, добавьте все имена комнат в файл, скажем, имя файла aaaaa

сделать завиток, как это,

curl -X POST -H "Cache-Control: no-cache" -d '{ "file": "aaaaa" }' "http://localhost:5280/api/create_rooms_file"

person Niranj Rajasekaran    schedule 25.07.2016
comment
Использование порта 5280 допустимо, но к тому же порту можно получить доступ и в веб-панели, поэтому рекомендуется настроить mod_resful, который использует порт 8088 для API. - person Mani Kandan; 25.07.2016