微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从ejabberd数据包中提取数据?

如何解决如何从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 举报,一经查实,本站将立刻删除。