如何解决如何从ejabberd数据包中提取数据?
我正在尝试从数据包中提取数据,以从FCM向用户发送消息。在为FCM创建json之前,我尝试从id和body提取内容。像这样:
-behavIoUr(gen_mod).
%% public methods for this module
-export([start/2,stop/1,mod_options/1,mod_doc/0,depends/2,create_message/1,post_offline_message/3]).
-include("/home/faiqkhan/ejabberd-20.07/lib/fast_xml-1.1.43/include/fxml.hrl").
%% required by ?INFO_MSG macros
-include("/home/faiqkhan/ejabberd-20.07/lib/ejabberd-20.07/include/logger.hrl").
-include("/home/faiqkhan/ejabberd-20.07/lib/ejabberd-20.07/include/translate.hrl").
start(_Host,_Opt) ->
%% post_offline_message("testFrom","testTo","testBody"),?INFO_MSG("mod_http_offline loading",[]),ejabberd_hooks:add(offline_message_hook,_Host,?MODULE,create_message,0).
stop (_Host) ->
?INFO_MSG("stopping mod_http_offline",ejabberd_hooks:delete(offline_message_hook,0).
create_message({_Action,Msg} = Acc) ->
?INFO_MSG("Packet details: ~p",[Msg]),From = fxml:get_path_s(xmpp:encode(Msg),[{elem,"from"},cdata]),?INFO_MSG("PacketsDataType ~p",[From]),Acc.
depends(_Host,_Opts) ->
[].
mod_options(_Host) ->
[].
mod_doc() ->
#{desc =>
?T("This an example module.")}.
在create_message函数中,我打印了正常工作的整个消息,但是当我尝试从Msg中提取数据时,它始终为空。
消息结果:数据包详细信息:{message,>,normal,>,{jid,> ,>,>,>,>,>},{jid,>,>,>,>,>,>},[],[{text,>,>}]],未定义,[],#{ip => {0,65535,49320,393},stanza_id => 1599039505408932}} **,提取的数据结果为:** PacketsDataType >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。