如果我的措辞有点不对,请和我一起。 我基本上想做的是编写一个脚本,该脚本在运行ejabberd服务的服务器上运行。 该脚本应该创建一个聊天室并自动向用户订阅。
我知道可以通过REST API做到这一点,但我不想通过外部但通过同一物理服务器内部的连接来触发。
还是goto方法然后通过本地主机运行API调用?
更新: 怀疑我可以通过本地主机简单地调用REST API。但是我仍然被困住。可能是我的配置或调用中有错字,所以我将在此分享我尝试过的内容:
嘿,谢谢您的回复。我本人已经走了这么远,但没有得到预期的结果。
因此,我在yml文件中配置了必要的部分,如下所示:
listen:
-
port: 5285
module: ejabberd_http
request_handlers:
"/rest": mod_rest
,并将localhost添加到主机。 然后,我尝试访问这样的REST函数:
curl -X POST -i -H "Content-type: application/json" http://localhost:5285/rest/create_room -d
'
{
"name":"testroom",
"service":"mychatservice.host.com",
"host":"host.com"
}
'
我得到了这个答复:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 21
Try POSTing a stanza.
我以为200码意味着我做对了,但是当我检查“ ejabberdctl muc_online_rooms global”时,它没有列出一个。 此外,基本网址后的任何错误命令都会向我返回相同的响应。那我在做什么错了?
编辑:我当然也包括其余模块本身:
mod_rest:
allowed_ips:
- "127.0.0.1"
答案 0 :(得分:1)
ejabberd正在监听连接,并且默认配置不限制它们来自何处。因此,可以的,您可以从本地主机发送REST API查询。
实际上,一旦完成该工作,就可以配置该侦听器以仅接受来自本地主机的连接。