我正在使用node-xmpp-component构建一个external-xmpp-component,我需要为任何给定的jid提取所有存档的消息。
我能够连接和发送消息,但我无法想象如何构建sanza来请求存档消息。
注意:这不是关于如何获取存档消息的问题,而是关于如何从外部XMPP组件获取它们的问题。
答案 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数据包,原因是隐私。
您需要为要实施的功能找到另一种设计。