我已经使用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"
任何人都可以帮我解决这个问题吗?
提前致谢。
答案 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
字段,如果您希望支持所附加文本的国际化,则可以使用该字段。