Oauth 如何通过RESTAPI在ejabberd中创建聊天室?

Oauth 如何通过RESTAPI在ejabberd中创建聊天室?,oauth,ejabberd,multiuserchat,ejabberd-api,Oauth,Ejabberd,Multiuserchat,Ejabberd Api,我知道我可以使用命令在ejabberd中创建聊天室 ejabberdctl创建房间名称muc\u服务xmpp\u域 我可以使用命令向用户发送邀请 ejabberdctl发送\u直接\u邀请室\u姓名密码原因jid1[:jid2] 有人能告诉我如何使用EjabberdRESTAPI做同样的事情吗 我正在使用oauth进行身份验证 我在ejabberd.yml文件中完成了以下配置 端口:5280 模块:ejabberd_http 请求处理程序: “/websocket”:ejabberd_http_

我知道我可以使用命令在ejabberd中创建聊天室

ejabberdctl创建房间名称muc\u服务xmpp\u域

我可以使用命令向用户发送邀请

ejabberdctl发送\u直接\u邀请室\u姓名密码原因jid1[:jid2]

有人能告诉我如何使用EjabberdRESTAPI做同样的事情吗

我正在使用oauth进行身份验证

我在ejabberd.yml文件中完成了以下配置

端口:5280
模块:ejabberd_http
请求处理程序:
“/websocket”:ejabberd_http_ws
“/log”:mod\u log\u http
“/oauth”:ejabberd_oauth
“/api”:mod_http_api
网站管理员:对
http_bind:true
登记:对
验证码:正确
命令\管理\访问:配置
命令:
-添加命令:
-使用者
-地位
oauth_到期日:3600
oauth_访问:全部

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

模块:

mod_muc_admin:{}

要执行创建房间的api请求

做一个卷发柱

curl-X POST-H“缓存控制:无缓存”-d”{
“名称”:“AAAA”,
“服务”:“bbbbb”,
“主机”:“ccccc”
}' "http://localhost:5280/api/create_room“

或者,如果要在一个斯托克中添加多个房间,请在一个文件中添加所有房间名称,例如文件名为
aaaaaa

像这样做一个卷曲

curl-X POST-H“缓存控制:无缓存”-d”{
“文件”:“AAAA”

}' "http://localhost:5280/api/create_rooms_file“

使用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"
它们是在允许的命令中声明的命令,只有这些命令可以通过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"]}


*/

与此类似,尝试发送直接邀请也可以…

使用5280端口也可以,但同样的端口也可以在webpanel中访问,因此建议配置mod_resful(使用端口8088作为api)。我应该将这些设置写入何处,即在模块下或ejabberd.yml文件中的其他地方。此外,这个“密钥”是什么意思?:“secret”是指,我应该按原样发送它吗?实际上我正在使用oauth,所以我在这里如何使用它。您需要将它添加到ejabberd.yml中的modules部分下,密钥用于身份验证目的,以便知道正确的人是否正在访问此端口。您可以通过更改ejabberd.yml中的值来更改key的值。@ManiKandan您在上述配置中使用了哪个ejabberd版本?ejabberd版本是16.04.43