Ejabberd 18.04 - Пользовательский модуль - Чтение пользовательского поля сообщения из пакета
Я пытаюсь реализовать пользовательский модуль для записи всех сообщений в веб-крючок. Я нашел хорошую ссылку для этого, https://github.com/PH-F/mod_offline_http_post/blob/master/src/mod_offline_http_post.erl.
У меня есть специальный тег в разделе сообщений, и я тоже хочу передать его в webhook.
Но я не мог понять, как прочитать пользовательское поле. Пожалуйста, помогите и скажите, какой API мне следует использовать, чтобы прочитать текст в теге "extra", показанном ниже.
Заранее спасибо.
Сервер Ejabber является последней версией 18.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>">>}]}
]
...
}
1 ответ
Самый простой способ, которым я могу думать:
fxml: get_tag_cdata (fxml: get_subtag_with_xmlns (xmpp: encode (Packet), << "extra" >>, << "ocp: extra" >>))
Это вернется:
<<"<extra type=\"image\" thumbnail=\"thumbnailUrl\" url=\"url\"></extra>">>