Mercurial > prosody-modules
changeset 3499:a1fc677d0cc8
muc_mam_markers: store chat markers in the Group Chat archives
By enabling this module, messages containing XEP-0333 Chat Markers
addressed to a Group Chat, will get stored in the archive.
author | marc0s <marcos.devera@quobis.com> |
---|---|
date | Fri, 29 Mar 2019 17:04:45 +0100 |
parents | 69219097aa85 |
children | e86315c9b5c4 |
files | mod_muc_mam_markers/README.markdown mod_muc_mam_markers/mod_muc_mam_markers.lua |
diffstat | 2 files changed, 49 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_muc_mam_markers/README.markdown Fri Mar 29 17:04:45 2019 +0100 @@ -0,0 +1,24 @@ +--- +labels: +- 'Stage-alpha' +summary: Save received chat markers into MUC archives' +... + +Introduction +============ + +Chat markers (XEP-0333) specification states that markers _SHOULD_ be +archived. This is already happening in one to one conversations in +the personal archives but not in Group Chats. This module hooks the +_muc-message-is-historic_ event to customize the `mod_muc_mam` +behavior and have the chat markers archived. + +Usage +===== + +First copy the module to the prosody plugins directory. + +Then add "muc\_mam\_markers" to your `modules\_enabled` list in your +MUC component's definition. + +No configuration options are available.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_muc_mam_markers/mod_muc_mam_markers.lua Fri Mar 29 17:04:45 2019 +0100 @@ -0,0 +1,25 @@ +-- mod_muc_mam_markers +-- +-- Copyright (C) 2019 Marcos de Vera Piquero <marcos.devera@quobis.com> +-- +-- This file is MIT/X11 licensed. +-- +-- A module to make chat markers get stored in the MUC archives +-- + +module:depends"muc_mam" + +local function handle_muc_message (event) + local stanza = event.stanza; + local is_received = stanza:get_child("received", "urn:xmpp:chat-markers:0"); + local is_displayed = stanza:get_child("displayed", "urn:xmpp:chat-markers:0"); + local is_acked = stanza:get_child("acknowledged", "urn:xmpp:chat-markers:0"); + if (is_received or is_displayed or is_acked) then + return true; + end + return nil; +end + +module:hook("muc-message-is-historic", handle_muc_message); + +module:log("debug", "Module loaded");