我正在使用JSMPP (Java实现的SMPP)从我的web应用程序发送短信到短信中心。我有以下代码,以接收任何发送的短信的交付报告。
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现在,我想知道如何在某个整数范围内检索发送状态,它是发送的、失败的还是仍然挂起的,以便我可以使用它相应地更新我的数据库?
发布于 2013-12-11 10:04:16
Jsmpp中有用于所有传递状态代码的DeliveryReceiptState enumaration。尝试deliveryReceipt.getFinalStatus().value(),它将为您提供要在数据库中更新的整数值。
您将获得状态代码的以下整数值。
/**
* DELIVERED
*/
DELIVRD(1),
/**
* EXPIRED
*/
EXPIRED(2),
/**
* DELETED
*/
DELETED(3),
/**
* UNDELIVERABLE
*/
UNDELIV(4),
/**
* ACCEPTED
*/
ACCEPTD(5),
/**
* UNKNOWN
*/
UNKNOWN(6),
/**
* REJECTED
*/
REJECTD(7);https://stackoverflow.com/questions/20487884
复制相似问题