2016-07-23 2 views
0

Я знаю, что я могу создать чат в ejabberd используя командуКак создать чат в ejabberd через rest api?

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: {}

ответ

1

Используйте 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" 

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

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

/* 
      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 тоже ...

+0

где я должен писать эти настройки, т. Е. Под модулями или где-то еще в файле ejabberd.yml. Кроме того, что означает этот «ключ»: «секрет» означает, должен ли я отправить его так, как есть, на самом деле я использую oauth, так как я могу использовать его здесь. – Ankit

+0

вам нужно добавить это в ejabberd.yml в разделе модулей, а ключ используется для целей аутентификации, чтобы узнать, обращается ли тот, кто имеет право доступа к этому порту. Вы можете изменить значение ключа, изменив значение в ejabberd.yml. –

+0

@ManiKandan, какую версию ejabberd вы использовали с вышеуказанной конфигурацией? –

0

Чтобы сделать запрос 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"

+0

Использование 5280 порта в порядке, но один и тот же порт можно получить в веб-панели, поэтому рекомендуется настроить mod_resful, который использует порт 8088 для api. –

Смежные вопросы