У меня Ejabberd работает с тестовыми пользователями и работает нормально. Я хочу, чтобы написать модуль, который может перехватывать сообщения и изменять их следующим образом:Как фильтровать сообщения в Ejabberd
- перехватывают «сообщения»
- отправить их в PHP файл
- получить результат из того же файла PHP (немедленного)
- Изменить сообщение строфу и отправить его вниз провод к получателю
документация ejabberd слаба и учебные пособия не существует. Можете ли вы дать мне пример кода, который делает это. Затем я могу понять, как настроить его для моих нужд.
Спасибо за комплект!
Адиль
Спасибо, gleber. Я уже зашел так далеко, и я вижу из INFO_MSG, что вызывается мой пакет_перехватчик. Как отправить эти XML-данные в php (через? Xml =) и получить полученный XML-файл, а затем передать его получателю? –
Adil
Вероятно, вы должны использовать http: request/1,2,3 для вызова своего PHP-скрипта. IIRC on_filter_packet будет вызываться в том же процессе, что и процесс маршрутизатора ejabberd, поэтому вы не должны делать там слишком много времени. Таким образом, решение состоит в том, чтобы создать новый процесс для этого, вернуть атом «drop» (удалить пакет), а когда измененная строфа возвращается с PHP, отправьте ее с использованием 'ejabberd_router: route (From, To, Packet)'. Вероятно, on_filter_packet будет вызываться снова в новом пакете, который вы отправили, поэтому обязательно его обнаружите и не обработайте дважды. – gleber
Чтобы обнаружить пакет, вы можете добавить тег ' ' в пакет с вашим собственным 'xmlns'. –
gleber