Пожалуйста, потерпите меня, если моя формулировка немного неверна. Что я в основном пытаюсь сделать, так это написать сценарий, который запускается на сервере, на котором работает служба ejabberd. Этот скрипт должен создавать чат и автоматически подписывать на него пользователей.
Я знаю, что это возможно через REST API, но я не хочу запускать это через соединение извне, а с того же физического сервера.
Или тогда метод goto будет запускать вызовы API через localhost?
ОБНОВЛЕНИЕ: как и предполагалось, я могу просто вызвать REST API через localhost. Но я все еще застрял. Вероятно, это какая-то опечатка в моей конфигурации или вызовах, поэтому я поделюсь здесь тем, что пробовал:
эй спасибо за ваш ответ. Я дошел до этого сам, но я не получаю ожидаемого результата.
Итак, я настроил необходимую часть в моем файле yml следующим образом:
listen:
-
port: 5285
module: ejabberd_http
request_handlers:
"/rest": mod_rest
и добавил localhost в hosts. Затем я попытался получить доступ к функции 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», в нем не было ни одного из них. Также любая неправильная команда после базового URL вернула мне тот же ответ. Так что я делаю неправильно?
редактировать: я, конечно, также включил сам модуль rest:
mod_rest:
allowed_ips:
- "127.0.0.1"