检索OpenFireXMPP框架的历史聊天记录

检索OpenFireXMPP框架的历史聊天记录,xmpp,chat,openfire,xmppframework,Xmpp,Chat,Openfire,Xmppframework,我使用Robbie Hanson的XMPPframwork和Openfire服务器开发了一个聊天应用程序。 我可以一对一和聊天组成功。但当我得到聊天的历史记录时,我无法得到全部的历史记录。我使用XEP-0136归档历史记录: 发送IQ: <iq type="get" id="hichic@macintosh"> <retrieve xmlns="urn:xmpp:archive" with="group12@conference.macintosh"&

我使用Robbie Hanson的XMPPframwork和Openfire服务器开发了一个聊天应用程序。 我可以一对一和聊天组成功。但当我得到聊天的历史记录时,我无法得到全部的历史记录。我使用XEP-0136归档历史记录:

发送IQ:

 <iq type="get" id="hichic@macintosh">
    <retrieve
        xmlns="urn:xmpp:archive" with="group12@conference.macintosh">
        <set
            xmlns="http://jabber.org/protocol/rsm">
            <max>100</max>
        </set>
    </retrieve>
</iq>

100
收到:

<iq type="result" id="hichic@macintosh" to="admin@macintosh/Macintosh">
    <chat
        xmlns="urn:xmpp:archive" with="group12@conference.macintosh" start="2016-08-23T08:42:55.777Z">
        <to secs="0">
            <body>asdf</body>
        </to>
        <to secs="5">
            <body>aafs</body>
        </to>
        <from secs="2" jid="haha@macintosh">
            <body>sax</body>
        </from>
        <set
            xmlns="http://jabber.org/protocol/rsm">
            <first index="0">0</first>
            <last>2</last>
            <count>3</count>
        </set>
    </chat>
</iq>

asdf
aafs
萨克斯
0
2.
3.

但是,当我打开数据库ofMessageArchive表时,我可以看到更多group12的消息(~20条消息),而结果只有3条。我可能会错过什么吗?

按照这个格式,它非常适合我

<iq id='a5sV8-21' type='set'>
    <query xmlns='urn:xmpp:mam:0' queryid="12345678">
        <x xmlns="jabber:x:data" type="submit">
            <field var="FORM_TYPE" type="hidden"><value>urn:xmpp:mam:0</value></field>
            <field var="with"><value>id@domain</value></field>
        </x>
        <set xmlns="http://jabber.org/protocol/rsm">
            <max>message_count</max>
        </set>
    </query>
</iq>

urn:xmpp:mam:0
id@domain
消息计数

**如果xmpp:mam:0不起作用,请使用xmpp:mam:1

您是否只收到您在群中发送的消息?@ShoaibAhmadGondal否。您可以看到结果,其中2封是我发送的,另一个是由haha@macintoshXEP-0136针对您的IQ数据包监视插件的实现基本上通过查询三个表来收集数据:转换表、参与者表和消息表。您是否可以在数据库中检查您正在查询的房间的引用,以确定数据在这三个表中存在关系。正如您已经提到的,数据存在于OfMessageChive中。哦,我意识到消息属于不同的对话。如果会话的空闲时间或最长时间已过,则会为您的应答创建新会话。因此,尝试通过从管理控制台定义属性来覆盖默认值。需要重写以下两个属性的值:conversation.idleTime=10,conversation.maxTime=60。将10,60(小时)更改为更合适的值,然后尝试是否仍然存在问题?它不起作用我在响应中收到错误urn:xmpp:mam:1test32_5811a995837c2@ip-172-31-4-183jabber.org/protocol/rsm“>100表示您的服务器未启用该功能。启用该功能将正常工作。