Ejabberd: дополнительные типы сообщений в MUC - PullRequest
0 голосов
/ 30 января 2012

Мне нужно много чатов MUC с дополнительной функциональностью:

  1. Изменить комнату пользователя вручную с помощью кода

  2. Обрабатывать специальные "системные" вызовы (например, вызовы типа / changeroom должны передаваться не всем, а обрабатываться системой)

  3. Хранить множество дополнительных данных о пользователе в таблице мнезийных сообщений

  4. Хранить всю историю где-то в db на hdd и возвращать ее по запросу.

Единственное, что приходит на ум (по второму пункту), - это перехватывать каждое событие обработки пакета package_fillter.Но это кажется слишком тяжелым.

Что бы вы могли посоветовать?

1 Ответ

0 голосов
/ 30 января 2012

Я подтверждаю, что ваш подход излишний.Обработка всех пакетов кажется ненужной.

Вам необходимо написать собственное расширение модуля MUC, если вам недостаточно функции расширения MUC XMPP (XEP-0045).

С момента ejabberd 15.07 , был представлен новый API-интерфейс ловушек под названием muc_filter_packet.Это позволяет вам легко написать модуль ejabberd, чтобы расширить только обработку пакетов MUC, не прослушивая все серверные пакеты.

...