Openfire 3.10.3
smack 4.1.6
I am trying to use DeliveryReceipts so that I know that the message has been sent. However, onReceiptReceived is never called.
I have done the following:
DeliveryReceiptManager deliveryReceiptManager = DeliveryReceiptManager.getInstanceFor(mClientConnection); deliveryReceiptManager.autoAddDeliveryReceiptRequests();
Sending the message
ChatManager chatManager = ChatManager.getInstanceFor(mClientConnection); Message msg = new Message(username, Message.Type.chat); msg.setBody(message); final String msgReceipt = DeliveryReceiptRequest.addTo(msg); log.log(Level.INFO, "msgReceiptRequest: " + msgReceipt); Chat chat = chatManager.createChat(username, mChatMessageListener); chat.sendMessage(message);
Sent message from the client
SENT (0): <message to='97.steve@xmpp1.call-genie.com' id='6xS4w-43' type='chat'><body>hello</body><thread>32091ad3-8da9-4758-9656-c06eb72532a2</thread><request xmlns='urn:xmpp:receipts'/></message>
On the receiving end of the client
<message to='97.steve@xmpp1.call-genie.com' id='6xS4w-43' type='chat'><body>hello</body><thread>32091ad3-8da9-4758-9656-c06eb72532a2</thread><request xmlns='urn:xmpp:receipts'/></message>
This code never gets called
deliveryReceiptManager.addReceiptReceivedListener(new ReceiptReceivedListener() { @Override public void onReceiptReceived(String fromJid, String toJid, String receiptId, Stanza receipt) { log.log(Level.INFO, "OnReceiptReceived fromJid: " + fromJid + " toJid: " + toJid + " receiptId: " + receiptId); } }); }
I have tried to do something like this when the client receives the message which I was thinking to send back which might trigger the onReceiptReceived event
chat.addMessageListener(new ChatMessageListener() { @Override public void processMessage(Chat chat, Message msg) { if(!msg.getBody().isEmpty()) { Message ms = new Message(); ms.addBody("EN", "delivered"); ms.setTo(msg.getFrom()); ms.setStanzaId(msg.getStanzaId()); DeliveryReceiptRequest.addTo(ms); mClientConnection.sendStanza(ms); } log.log(Level.INFO, "receiveChatMessages Received prompted message: " + msg.getBody()); } }
Many thanks for any suggestions,