检索muc_filter_message挂钩内的时间戳记值

时间:2019-02-01 15:09:49

标签: ejabberd ejabberd-module ejabberd-api ejabberd-hooks

是否可以在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中提取一个指示时间戳的字段吗?

在客户端,我将这个帧存档-> id与ejabberd数据库的存档表中存储的时间戳匹配

enter image description here

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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