2013-12-10 8 views
0

내 웹 응용 프로그램에서 SMS 센터로 SMS를 보내기 위해 JSMPP (자바 구현 SMPP)를 사용하고 있습니다. 보낸 SMS의 배달 보고서를받을 수있는 다음 코드가 있습니다. 내가 배달 확인 '는 SMS에 대해 위의 리스너를 등록하고 보낼 때JSMPP에서 보낸 메시지의 상태 확인

을 다음과 같이하고, 배달 확인 지금

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

을 다음과 같다

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

, 그것은 배달 확인을받을 I 어떤 정수 범위에서 보내는 상태를 검색하는 방법이 궁금합니다. 전송, 실패 또는 보류 중으로 데이터베이스를 업데이트 할 수 있습니다.

답변

3

모든 배달 상태 코드에 대해 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); 
+0

나중에 ID를 기반으로 SMS 상태를 확인하려면 어떻게해야합니까? – sikander

+0

submitsm에서 ID를 가져 와서 db에 저장하고 업데이트시이 ID를 확인하십시오. – GP32

+0

저장된 ID를 사용하여 나중에 SMS 상태를 확인할 수 있습니까? – sikander