Adi*_*dil 13 erlang hook ejabberd
我让Ejabberd和测试用户一起运行,并且工作正常.我想编写一个可以拦截消息并修改它们的模块,如下所示:
ejabberd文档很薄弱,教程也不存在.你能给我一些代码来做这个吗?然后我可以想出如何根据我的需要配置它.
谢谢捆绑!
阿迪尔
gle*_*ber 14
以下是此类模块的基本示例:
-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.
Run Code Online (Sandbox Code Playgroud)
并确保将此模块添加到ejabberd的配置中module:
{modules,
[...
...
...
{packet_interceptor, []}
]}.
Run Code Online (Sandbox Code Playgroud)
只需扩展on_filter_packet/1您想要的方式并返回适当修改的数据包.