【发布时间】:2013-12-11 18:19:11
【问题描述】:
我正在使用 JSMPP(SMPP 的 Java 实现)将 SMS 从我的 Web 应用程序发送到 SMS 中心。我有以下代码来接收任何已发送短信的送达报告。
public class MessageListenerImplementation implements MessageReceiverListener {
public void onAcceptDeliverSm(DeliverSm deliverSm) throws ProcessRequestException {
if (MessageType.SMSC_DEL_RECEIPT.containedIn(deliverSm.getEsmClass())) {
try {
DeliveryReceipt deliveryReceipt = deliverSm.getShortMessageAsDeliveryReceipt();
long id = Long.parseLong(deliveryReceipt.getId()) & 0xffffffff;
String messageId = Long.toString(id, 16).toUpperCase();
System.out.println("Delivery receipt for message '" + messageId + " ' from " + deliverSm.getSourceAddr() + " to " + deliverSm.getDestAddress() + " : " + deliveryReceipt);
}catch (InvalidDeliveryReceiptException e) {
System.err.println("Failed getting delivery receipt");
e.printStackTrace();
}
}
}
}
当我为 SMS 的送达回执注册上述监听器并发送它时,它会得到如下的送达回执
收货如下
id:5 sub:001 dlvrd:001 submit date:1312091213 done date:1312091213 stat:DELIVRD err:000 text:Hello SMSC from ESME
现在我想知道如何在某个整数范围内检索发送状态,无论它是已发送、失败还是仍在等待中,以便我可以使用它来相应地更新我的数据库?
【问题讨论】: