如何使用 XMPPFramework 从 ejabberd 中删除两个用户之间的特定消息?

Posted

技术标签:

【中文标题】如何使用 XMPPFramework 从 ejabberd 中删除两个用户之间的特定消息?【英文标题】:How to delete particular message between two user from ejabberd using XMPPFramework? 【发布时间】:2019-02-05 12:49:46 【问题描述】:

我正在尝试从 ejabberd 中删除消息,但收到错误消息。

<iq xmlns="jabber:client" to="my id" from="other user id" type="error" id="8A056958-DE72-4234-8440-928E8D650948"><remove xmlns="urn:xmpp:archive" with="other user id" start="2018-08-30T10:40:00Z"/><error code="503" type="cancel"><service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">No module is handling this query</text></error></iq>

请帮忙。

【问题讨论】:

您从哪里得知这是可能的?你是怎么尝试的? 请查看链接:xmpp.org/extensions/attic/xep-0136-1.0.html 7.3 删除集合示例 43. 删除单个集合 【参考方案1】:

从我在这里看到的https://www.process-one.net/en/ejabberd/protocols/

Ejabberd 不支持旧的消息归档 XEP-0136,而是支持 XEP-0313 消息归档管理。

以下XEP可用于实现对发件人和收件人http://legastero.github.io/customxeps/extensions/message-delete.html的消息删除

但我不知道如何从 XEP-0313 消息存档管理中删除消息 - 看起来使用 ejabberd 和 XEP 本身是不可能的。我没有看到任何消息 ID 存储在 DB https://github.com/processone/ejabberd/blob/master/src/mod_mam_sql.erl#L110

我唯一的想法是将文本消息与删除状态一起存储在存档中。然后,在检索历史记录时,将这些删除信号应用于消息

【讨论】:

以上是关于如何使用 XMPPFramework 从 ejabberd 中删除两个用户之间的特定消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 xmppframework 的 didReceive IQ 方法中检索图像?

XMPPFramework - 如何向 XMPPUserCoreDataStorageObject 添加自定义属性?

如何使用 XMPPFramework 响应 Openfire ping 请求

如何检查用户 JID 是不是已在 XMPPFrameWork 中使用

如何通过 XMPPFramework 添加好友

XMPPFramework - 如何获取在线和离线好友列表?