【问题标题】:getting status of a sent message in JSMPP在 JSMPP 中获取已发送消息的状态
【发布时间】: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

现在我想知道如何在某个整数范围内检索发送状态,无论它是已发送、失败还是仍在等待中,以便我可以使用它来相应地更新我的数据库?

【问题讨论】:

    标签: java sms smpp jsmpp


    【解决方案1】:

    Jsmpp 中有 DeliveryReceiptState 枚举,用于所有的交付状态代码。 试试deliveryReceipt.getFinalStatus().value(),它会给你一个整数值来更新数据库。

    您将获得以下状态代码的整数值。

    /**
         * DELIVERED
         */
    
        DELIVRD(1),
        /**
         * EXPIRED
         */
        EXPIRED(2),
        /**
         * DELETED
         */
        DELETED(3),
        /**
         * UNDELIVERABLE
         */
        UNDELIV(4),
        /**
         * ACCEPTED
         */
        ACCEPTD(5),
        /**
         * UNKNOWN
         */
        UNKNOWN(6),
        /**
         * REJECTED
         */
        REJECTD(7);
    

    【讨论】:

    • 如果我想稍后根据它的 id 检查 SMS 状态怎么办,有什么办法吗?
    • 以后可以使用存储的id查看短信状态吗?
    • 怎么样? id 是整数类型,是否有任何方法可以传递此 id 并获取消息的状态..
    • Option1 :您需要使用存储的 id 检查 deliveryReceipt.getId() ,为此您必须等待 deliveryReceipt 。选项2:否则,如果您想检查消息状态。使用 QuerySm 。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2014-11-24
    • 2021-05-05
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多