Ejabberd 13.12 如何添加元素 XMPP 数据包?
Posted
技术标签:
【中文标题】Ejabberd 13.12 如何添加元素 XMPP 数据包?【英文标题】:Ejabberd 13.12 how to add element XMPP Packet? 【发布时间】:2014-04-18 15:54:24 【问题描述】:我正在使用名为“filter-packet”的 ejabberd 钩子来制作一个模块。在这里,我想向数据包添加一个元素。怎么做?我的代码是 -
on_filter_packet(From, To, Packet=Input) ->
Type = xml:get_tag_attr_s(list_to_binary("type"), Packet),
if (Type == <<"groupchat">>) ->
?INFO_MSG("type is group chat", []),
NPacket=Packet, [xmlelement, "time",
[],
[xmlcdata, "testtime"]],
From, To, NPacket;
true ->
Input
end.
此代码给出不匹配的错误。有什么帮助吗?
【问题讨论】:
【参考方案1】:13.12 对 xmlelement 使用不同的类型。
Packet是一种记录#xmlel,所以需要在Packet#xmlel.children中插入新元素。
on_filter_packet(From, To, #xmlel children=OldChildren = Packet=Input) ->
...
TimeElem = #xmlel name = <<"time">>,
children =
[xmlcdata, <<"testtime">>],
NPacket = Packet#xmlel children = [TimeElem|OldChildren] ,
...
未经测试,但可以使用。
【讨论】:
以上是关于Ejabberd 13.12 如何添加元素 XMPP 数据包?的主要内容,如果未能解决你的问题,请参考以下文章
ejabberd,erlang,简单看了一下,总结一下,很肤浅