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,简单看了一下,总结一下,很肤浅

ejabberd:如何从 xml 元素中提取数据

Ejabberd 如何将新用户添加到名册

使用 Python 将“拍摄日期”Exif/XMP 信息添加到 TIF 文件

将动态主管添加到 ejabberd

找到号码。结构数组中的元素?