Ejabberd 18.04 - 自定义模块 - 从数据包中读取自定义消息字段
Ejabberd 18.04 - Custom Module - Read custom message field from Packet
我正在尝试实现自定义模块以将所有消息记录到网络挂接。 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"><extra type="image" thumbnail="thumbnailUrl" url="url"></extra></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>">>}]}
]
...
}
我能想到的最简单的方法:
fxml:get_tag_cdata(fxml:get_subtag_with_xmlns(xmpp:encode(Packet),
<<"extra">>, <<"ocp:extra">>))
那会 return:
<<"<extra type=\"image\" thumbnail=\"thumbnailUrl\" url=\"url\"></extra>">>
我正在尝试实现自定义模块以将所有消息记录到网络挂接。 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"><extra type="image" thumbnail="thumbnailUrl" url="url"></extra></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>">>}]}
]
...
}
我能想到的最简单的方法:
fxml:get_tag_cdata(fxml:get_subtag_with_xmlns(xmpp:encode(Packet), <<"extra">>, <<"ocp:extra">>))
那会 return:
<<"<extra type=\"image\" thumbnail=\"thumbnailUrl\" url=\"url\"></extra>">>