How to get timestamp of incoming xmpp message?

Infernus picture Infernus · Jun 21, 2012 · Viewed 13.2k times · Source

I am using aSmack library to communicate with remote xmpp server. I am able to send/receive messages, but I want to get timestamp of incoming message.

Could you tell me please, is it possible at all? Because I can't find anything about this question.

Thanks in advance

Answer

Dmitry picture Dmitry · Jun 21, 2012

Due to specs time is required attribute for XMPP message:

http://xmpp.org/extensions/xep-0203.html#protocol

Check the <delay item of <message:

<delay xmlns='urn:xmpp:delay'
 from='capulet.com'
 stamp='2002-09-10T23:08:25Z'>
Offline Storage
</delay> 

But getting it looks a bit tricky. As soon as aSmack is recompiled Smack with some replaced stuff, so try to get it the way like here:

http://edwin.baculsoft.com/2011/06/how-to-get-offline-messages-timestamp-on-openfire/

DelayInformation inf = null;
try {
    inf = (DelayInformation)packet.getExtension("x","jabber:x:delay");
} catch (Exception e) {
    log.error(e);
}
// get offline message timestamp
if(inf!=null)
    Date date = inf.getStamp();

Problably, you will need to check what server sends with message as extension value and replace "jabber:x:delay" with 'urn:xmpp:delay' as it is shown in XMPP specs example.

But not sure if it works.