如何在ejabberd

时间:2017-08-02 08:23:12

标签: xml xmpp chat ejabberd ejabberd-hooks

我已经使用Pidgin和Ejabberd建立了聊天记录。我使用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}.

基本上,这个功能的作用是每当有人发送聊天消息时说“你好”#34;,Sum的值会被计算并打印在服务器及其日志和消息上## 34;&#34;你好那里&#34;被发送给第二个用户。

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

"hello there Sum is 4" 

任何人都可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分: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字段,如果您希望支持所附加文本的国际化,则可以使用该字段。