0

我已经使用 Pidgin 和 Ejabberd 建立了一个聊天设置。我在 ejabberd 中使用以下方法编写了一个自定义模块user_send_packet

ejabberd_hooks:add(user_send_packet, _Host, ?MODULE,
           myMessage, 95),

myMessage函数如下:

myMessage({Packet, C2SState})->


PacketType=xmpp:get_name(Packet),
case PacketType of
<<"iq">>->
ok;
<<"presence">>->
ok;
<<"message">>->

Sum=2+2,
?INFO_MSG("Sum is ~p~n",[Sum])

end,

{Packet,C2SState}.

基本上,这个函数的作用是,每当有人发送聊天消息说“你好”时,Sum都会计算并在服务器及其日志上打印的值,并将“你好”的消息发送给第二个用户。

但是现在我想将 的值Sum与消息一起发送"hello there"给第二个用户,例如:

"hello there Sum is 4" 

谁能帮我解决这个问题?

提前致谢。

4

1 回答 1

1

这里是:

process_message({#message{body = Body} = Msg, C2SState})->
    Sum = calc_sum_and_return_as_binary(),
    NewBody = lists:map(
        fun(#text{data = Data} = Txt) ->
            Txt#text{data = <<Data/binary, Sum/binary>>}
        end, Body),
    {Msg#message{body = NewBody}, C2SState};
process_message(Acc) ->
    Acc.

请注意,如果您想支持附加文本的国际化,该#text{}记录包含lang可以使用的字段。

于 2017-08-03T08:19:32.313 回答