【发布时间】:2013-11-21 08:12:43
【问题描述】:
我需要客户端验证消息已到达 Ejabberd 服务器。对我来说最简单的方法似乎是有一个钩子将消息返回给用户,然后编码以便我的客户验证。
我发现我已经验证的 mod_stanza_ack 是由所有传入消息触发的。
所以问题是:
如何从钩子中向用户发送回消息?
我需要一个快速的解决方案。
-module(mod_stanza_ack).
-behaviour(gen_mod).
-include("ejabberd.hrl").
-export([start/2,
stop/1]).
-export([on_user_send_packet/3]).
start(Host, _Opts) ->
?INFO_MSG("mod_stanza_ack starting", []),
ejabberd_hooks:add(user_send_packet, Host, ?MODULE, on_user_send_packet, 0),
ok.
stop(Host) ->
?INFO_MSG("mod_stanza_ack stopping", []),
ejabberd_hooks:delete(user_send_packet, Host, ?MODULE, on_user_send_packet, 0),
ok.
on_user_send_packet(From, To, Packet) ->
?INFO_MSG("mod_stanza_ack a package has been sent coming from: ~p", [From]),
?INFO_MSG("mod_stanza_ack a package has been sent to: ~p", [To]),
?INFO_MSG("mod_stanza_ack a package has been sent with the following packet: ~p", [Packet]),
Packet.
【问题讨论】:
-
对于任何感兴趣的人,stackoverflow.com/questions/63454410/…中有此示例模块的更新版本