如何从外部组件获取存档消息

时间:2015-05-31 07:14:34

标签: node.js xmpp tigase

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

我能够连接和发送消息,但我无法想象如何构建sanza来请求存档消息。

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

1 个答案:

答案 0 :(得分:0)

要获取邮件存档,您需要从请求存档的用户帐户进行查询。正如您在XEP示例(Querying an archive)中看到的那样,没有地方可以定义您正在扮演的用户。它应该是发送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'命名空间。 JID的域标识符部分   包含在'from'属性中必须匹配的主机名   零件。但是,这是对“来自”地址的唯一限制,   组件可以从任何用户的主机名发送节。

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

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

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