如何从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 (将#修改为@)