我正在使用REST API / api / send_message 从android设备将消息发送到受阻服务器,并在服务器端成功接收,但是在收到消息后ejabberd服务器未发送给客户端。我从这样的客户端发送一条消息:
dictify(df, ['n1', 'n2'])
{'s1': {'A': [{'C': 3, 'D': 4}, {'C': 5, 'D': 6}], 'B': {'P': 6, 'Q': 3}}}
我还在ejabberd上登录on_user_send_packet列表程序,并打印数据包的数据,该数据与我从客户端发送的数据相同。
我在android中使用smack库。
我收到消息的服务器端模块部分:
192.168.1.24:5443/api/send_message?"type"= "normal",&"from"= "admin@faiqkhan-Virtualbox",&"to"= "faiq@faiqkhan-Virtualbox",&"subject"= "Restart",&"body"="In 5 minutes"
服务器日志:
on_user_send_packet({#message{from = From, body = Body,
subject = Subject} = Packet, C2SState}) ->
?INFO_MSG("mod_stanza_ack message packet: ~p~n", [Packet]),
?INFO_MSG("mod_stanza_ack message subject: ~p~n", [Subject]),
?INFO_MSG("mod_stanza_ack message body ignored: ~p~n", [Body])
end,
{Packet, C2SState}.
尝试使用smack库的回调在客户端接收消息
API call send_message [{<<"type">>,<<"normal">>},{<<"from">>,<<"67456efc-be57-4cbd-a176-527de2dce19d@faiqkhan-virtualbox">>},{<<"to">>,<<"e5d6d83c-ea77-4d10-aaac-4e0e38899ac2@faiqkhan-virtualbox">>},{<<"subject">>,<<"Restart">>},{<<"body">>,<<"In 5 minutes">>}] from ::ffff:192.168.1.46:51597
13:43:14.298 [info] mod_stanza_ack message packet: {message,<<"4325851467592961166">>,normal,<<>>,{jid,<<"67456efc-be57-4cbd-a176-527de2dce19d">>,<<"faiqkhan-virtualbox">>,<<>>,<<"67456efc-be57-4cbd-a176-527de2dce19d">>,<<"faiqkhan-virtualbox">>,<<>>},{jid,<<"e5d6d83c-ea77-4d10-aaac-4e0e38899ac2">>,<<"faiqkhan-virtualbox">>,<<>>,<<"e5d6d83c-ea77-4d10-aaac-4e0e38899ac2">>,<<"faiqkhan-virtualbox">>,<<>>},[{text,<<>>,<<"Restart">>}],[{text,<<>>,<<"In 5 minutes">>}],undefined,[],#{}}
13:43:14.298 [info] mod_stanza_ack message subject: [{text,<<>>,<<"Restart">>}]
13:43:14.298 [info] mod_stanza_ack message body ignored: [{text,<<>>,<<"In 5 minutes">>}]
我是否想念客户端上的一些监听器?
答案 0 :(得分:0)
它对我来说正常工作。我注册帐户admin
和faiq
,并使用Tkabber客户端登录到faiq
帐户,然后发送API查询:
ejabberdctl send_message normal admin@localhost faiq@localhost Restart In5minutes
客户端完美接收消息:
<message to='faiq@localhost'
from='admin@localhost'
id='18338888910541408674'>
<archived by='faiq@localhost'
id='1599730686404819'
xmlns='urn:xmpp:mam:tmp'/>
<stanza-id by='faiq@localhost'
id='1599730686404819'
xmlns='urn:xmpp:sid:0'/>
<body>In5minutes</body>
<subject>Restart</subject>
</message>
您可以使用Gajim或Psi等著名的Jabber桌面客户端登录,以检查您的API调用是否正常运行。这样,您将知道问题出在您的客户中还是在哪里……