我正在尝试使用ruby xmpp4r库与openfire服务器获得openfire多用户组聊天记录。我能够框架的请求,但我没有得到服务器的答复。下面是发现请求
iqr = Iq.new(:get,"example.com")
iqr.add_namespace("http://jabber.org/protocol/disco#info")
client.send(iqr)
,这是请求的框架
<iq to='example.com' type='get' xmlns='http://jabber.org/protocol/disco#info'/>
,但我没有得到一个服务器回复。我跟踪了XEP-0160和XEP-0013。
我在这里错过了什么?
openfire提供房间聊天记录吗?有api吗?
任何帮助都非常感谢。我不太了解明火,所以任何关于它的信息我都非常感谢。
据我所知,只有当房间配置为持久化并设置为日志会话时,才能从房间检索聊天历史记录。对于服务器返回多少天前的历史记录也有限制。过去的限制是2天,但已经有了长期的讨论和一些补丁来解决这个限制。
根据这里的另一个问题,它不可能通过直接的HTTP请求检索历史,而不通过单独的xmp服务器代理历史,这是你想做的,或者你正在与Openfire服务器交谈?
总之,看起来你想要的是可能的。根据XMPP规范,任何新用户在加入时都会收到一个房间的完整历史记录,前提是这个房间被配置为发送它。所以,简单地加入一个正确配置的房间作为一个随机创建的用户将给你你正在寻找的历史。
因此,如果这是为您运行的服务,或者如果您试图存档别人的服务器,您的里程可能会警惕。如果您设置了服务器,这看起来是可能的,即使不是通过特定的API调用。如果服务不受你的控制,那么你可能就不走运了,因为历史记录可能根本就不在那里。
希望这对你有所帮助,即使我不能给出一个具体的解决方案。
服务发现
根据服务发现文档,您的请求未完成:
<iq type='get'
from='romeo@montague.net/orchard'
to='plays.shakespeare.lit'
id='info1'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>
也许您应该阅读一下如何使用gem与XMPP服务建立基本连接?这看起来是你需要开始的东西。他们有很多例子,应该会帮助你在相当多的宝石细节…