Вот базовый пример такого модуля:
-module(packet_interceptor).
-behaviour(gen_mod).
-export([start/2,
stop/1]).
-export([on_filter_packet/1]).
start(Host, _Opts) ->
ejabberd_hooks:add(filter_packet, global, ?MODULE, on_filter_packet, 0).
on_filter_packet({From, To, XML} = Packet) ->
%% does something with a packet
%% should return modified Packet or atom `drop` to drop the packet
Packet.
И обязательно добавьте этот модуль в конфигурацию ejabberd в раздел module
:
{modules,
[...
...
...
{packet_interceptor, []}
]}.
Просто расширьте on_filter_packet/1
так, как вы хотите, и верните соответствующим образом измененный пакет.