XMPPFramework – Retrieve Archived Messages From Openfire Server

You have to do a request with <retrieve> (see http://xmpp.org/extensions/xep-0136.html) then you can take a specific time from the received <list> result. For example:

Send:

    <iq type="get" id='pk1'>
       <list xmlns="urn:xmpp:archive"
               with="piyush@openfire">
        <set xmlns="http://jabber.org/protocol/rsm">
            <max>30</max>
        </set>
      </list>
   </iq>

Receive:

 <iq type="result" id="pk1" to="vivek@openfire/iphone">
     <list xmlns="urn:xmpp:archive">
      <chat with="piyush@openfire" start="2012-07-04T13:16:12.291Z"/>
      <chat with="piyush@openfire" start="2012-07-05T08:25:31.555Z"/>
      <chat with="piyush@openfire" start="2012-07-05T12:38:24.098Z"/>
      <set xmlns="http://jabber.org/protocol/rsm">
          <first index="0">15</first>
           <last>25</last>
           <count>3</count>
      </set>
    </list>
 </iq>            

Now you choose one of starts and send (date and hour must be exacts):

  <iq type="get" id='pk1'>
    <retrieve xmlns="urn:xmpp:archive"
        with="piyush@openfire"'
        start="2012-07-04T13:16:12.291Z">
     <set xmlns="http://jabber.org/protocol/rsm">
       <max>100</max>
     </set>
    </retrieve>
 </iq>

You will receive something like this (depends the max value -> max=30, bodies=30):

   <iq type="result" to='vivek@openfire/iphone' id='page1'>
      <chat xmlns="urn:xmpp:archive"
             with="piyush@openfire"
              start="2012-07-04T13:16:12.291Z"
            subject="She speaks!"
       version='4'>
         <from secs="0"><body>Art thou not Romeo, and a Montague?</body></from>
         <to secs="11"><body>Neither, fair saint, if either thee dislike.</body></to>
          .
          [28 more messages]
          .
         <from secs="9"><body>How cam'st thou hither, tell me, and therefore?           </body>   
         </from>
      <set xmlns="http://jabber.org/protocol/rsm">
       <first index='0'>0</first>
       <last>29</last>
       <count></count>
     </set>
  <iq>

Leave a Comment