Ejabberd 18.04 - 自定义模块 - 从包

时间:2018-05-25 07:43:45

标签: ejabberd ejabberd-module ejabberd-hooks

我正在尝试实现一个自定义模块,将所有消息记录到webhook。我已经找到了一个很好的参考,https://github.com/PH-F/mod_offline_http_post/blob/master/src/mod_offline_http_post.erl

我在消息节中有一些自定义标记,我也希望将其传递给webhook。

但我无法弄清楚如何阅读自定义字段。请帮助并告诉我应该使用哪个API来阅读" extra"标签,显示如下。

提前致谢。

Ejabber服务器是最新的 v18.04

邮件的Xml格式:

<message type="chat" to="dichen@123.123.123.123" id="7521387E-D6D1-41B4-A909-E9AD3251FB84">
 <body>Image</body>
 <thread>dichen@123.123.123.123</thread>
 <x xmlns="jabber:x:event"><offline/></x>
 <extra xmlns="ocp:extra">&lt;extra type="image" thumbnail="thumbnailUrl" url="url"&gt;&lt;/extra&gt;</extra>
</message>

我从Ejabberd日志中获得的数据包格式:

{message,
<<"7521387E-D6D1-41B4-A909-E9AD3251FB84">>,
chat,
<<"en">>,
{jid,<<"dichen">>,<<"123.123.123.123">>,<<>>,<<"dichen">>,<<"123.123.123.123">>,<<>>},
{jid,<<"johndoe">>,<<"123.123.123.123">>,<<>>,<<"johndoe">>,<<"123.123.123.123">>,<<>>},
[],
[{text,<<>>,<<"Image">>}],
{message_thread,<<>>,<<"johndoe@52.160.83.11">>},
[
  {xmlel,<<"x">>,[{<<"xmlns">>,<<"jabber:x:event">>}],[{xmlel,<<"offline">>,[],[]}]},
  {xmlel,<<"extra">>, [{<<"xmlns">>,<<"ocp:extra">>}], [{xmlcdata,<<"<extra type=\"image\" thumbnail=\"thumbnailUrl\"  url=\"url\"></extra>">>}]}
]
...
}

1 个答案:

答案 0 :(得分:1)

我能想到的最简单的方法:

  

FXML:get_tag_cdata(FXML:get_subtag_with_xmlns(XMPP:编码(数据包),   &lt;&lt;&#34; extra&#34;&gt;&gt;,&lt;&lt;&#34; ocp:extra&#34;&gt;&gt;))

那将返回:

 <<"<extra type=\"image\" thumbnail=\"thumbnailUrl\" url=\"url\"></extra>">>