如何在 ejabberd 中的 xmpp 消息正文中附加自定义数据

How do I append custom data in the body of a xmpp message in ejabberd

我已经使用 Pidgin 设置了一个聊天设置并且 Ejabberd.I 使用 user_send_packet:

在 ejabberd 中写下了一个自定义模块
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}.

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

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

"hello there Sum is 4" 

谁能帮我解决这个问题?

提前致谢。

这里是:

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 字段,如果您想支持所附加文本的国际化,可以使用该字段。