2013-12-10 6 views
0

Я использую JSMPP (реализация Java SMPP) для отправки SMS с моего веб-приложения в центр SMS. У меня есть следующий код для получения отчета о доставке любого отправленного SMS.Получение статуса отправленного сообщения в JSMPP

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(); 
      } 
     } 
    } 
} 

Когда я зарегистрировать выше слушатель для СУБП»квитанции о доставке и отправить его, то получите уведомление о доставке следующего

и получение поставки следующим

id:5 sub:001 dlvrd:001 submit date:1312091213 done date:1312091213 stat:DELIVRD err:000 text:Hello SMSC from ESME 

Теперь я интересно узнать, как получить статус отправки в каком-то целочисленном диапазоне, независимо от того, отправлено, не выполнено или все еще ожидает, чтобы я мог использовать его для обновления моей базы данных соответственно?

ответ

3

В 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); 
+0

И что, если я хочу позже проверить статус СМС на основе его идентификатора, есть ли способ сделать это? – sikander

+0

Вы получите идентификатор в submitsm, сохраните его в db и отметьте этот идентификатор при обновлении. – GP32

+0

Могу ли я использовать сохраненный идентификатор, чтобы проверить статус SMS позже? – sikander

 Смежные вопросы

  • Нет связанных вопросов^_^