0

是否可以在muc_filter_message 钩子中获取消息的时间戳?我需要通知 muc 消息,通知负载必须包含消息的时间戳。

muc_filter_message(#message{from = From, body = Body} = Pkt,
           #state{config = Config, jid = RoomJID} = MUCState,
           FromNick) ->

    ?INFO_MSG("~p.", [From#jid.lserver]),

    PostUrl = gen_mod:get_module_opt(From#jid.lserver, ?MODULE, post_url, fun(S) -> iolist_to_binary(S) end, list_to_binary("")),

我可以从中提取Pkt一个指示时间戳的字段吗?

在客户端,我得到了这个框架,其中 archived -> id 与存储在 ejabberd 数据库的归档表中的时间戳匹配

在此处输入图像描述

4

2 回答 2

0

XMPP 消息(包括 MUC)在实时传递时没有时间戳。您在客户端应用程序和日志中看到的所有时间戳都只是在收到消息时从本地时钟获取 - 这就是聊天日志和您的本地应用程序倾向于显示不同时间戳的原因。

在您的用例中,我认为这意味着您应该只从服务器上的当前时间生成时间戳。

于 2019-02-01T16:29:04.830 回答
0

什么时间戳?如https://xmpp.org/extensions/xep-0045.html中所述,群聊消息不包含有关时间戳的任何元素或属性。因此,Pkt 不包含任何时间信息。

于 2019-02-01T16:04:23.140 回答