1

我知道我可以使用命令在 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

并且还使用在 ejabberd.yml 文件中启用了 mod_muc_admin

modules: mod_muc_admin: {}

4

2 回答 2

2

使用 mod_restful 模块通过 api 访问 ejabberd。如果要访问该模块,则需要在 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"

它们在 allowed_commands 中声明的命令,只有那些命令可以通过 api 访问。因此,将来如果您想访问需要在此处添加的任何其他命令。

完成添加后,重新启动 ejabberd,您可以使用 postman 或 curl 访问 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 ...

于 2016-07-25T08:32:10.123 回答
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"

于 2016-07-25T08:24:26.090 回答