0

我正在使用 node-xmpp-component 来构建一个 external-xmpp-component,我需要为任何给定的 jid 提取所有存档消息。

我能够连接和发送消息,但我不知道如何构建 sanza 以请求存档消息。

注意:这不是关于如何获取归档消息的问题,而是关于如何从外部 XMPP 组件获取它们的问题。

4

1 回答 1

0

要获取消息存档,您需要从请求存档的用户帐户中查询它。正如您在 XEP 示例(查询存档)中看到的,没有地方可以定义您所扮演的用户。它应该是发送 XMPP 数据包的用户:

<iq type='set' id='juliet1'>
  <query xmlns='urn:xmpp:mam:0' queryid='f27' />
</iq>

然而,node-xmpp-component 实现了 XEP-0114: Jabber Component Protocol。组件协议基本上说,您只能充当组件或来自该组件域的任何用户名:

一旦通过身份验证,组件就可以通过服务器发送节并从服务器接收节。发送到服务器的所有节必须拥有一个“from”属性和一个“to”属性,就像在“jabber:server”命名空间中一样。'from' 属性中包含的 JID 的域标识符部分必须与组件的主机名匹配。然而,这是对“发件人”地址的唯一限制,组件可以从任何用户以它的主机名发送节。

这意味着出于隐私/安全原因,“Jabber 组件”不能代表主服务器用户发送数据包。

因此,您不能伪造从组件作为用户查询 MAM 存档所需的 IQ 数据包,原因是隐私。

您需要为要实现的功能找到另一种设计。

于 2015-07-30T11:04:58.313 回答