2013-06-18 7 views
1

나는 내 질문에 곧 올 것이다.SMPP를 통해 여러 SMS 보내기

  1. Logica smpp을 사용하고 있으며 여러 개의 숫자로 문자를 보내고 싶습니다. 아래 코드는 예외를 제공합니다.

    public void submitMulti() { 
    String serviceType = "";   
    byte replaceIfPresentFlag = 0; 
    String scheduleDeliveryTime = null; 
    String validityPeriod = null; 
    byte esmClass = 0; 
    //###################### 
    //byte protocolId = 0; 
    //byte dataCoding = 0; 
    byte protocolId = 0; //0x00; commented is for flash 
    byte dataCoding = (byte) 0x08; //0x18 
    byte smsClass = 0x00; 
    //###################### 
    byte ton = 1; 
    byte npi = 1; 
    byte priorityFlag = 0; 
    byte registeredDelivery = 0; //TODO registered delivery 
    byte smDefaultMsgId = (byte) 12; //0; 
    try { 
        SubmitMultiSM request = new SubmitMultiSM(); 
        SubmitMultiSMResp response; 
    
        // input values and set some :-) 
        String sourceAddress = "123456789012"; 
        int numberOfDestination = 10; 
        for (int i = 0; i < numberOfDestination; i++) { 
         request.addDestAddress(new DestinationAddress(new Address(ton,npi,"923458503302"))); 
        } 
    
        // set other values 
        request.setServiceType(serviceType); 
        request.setSourceAddr(sourceAddress); 
        request.setReplaceIfPresentFlag(replaceIfPresentFlag); 
        request.setShortMessage("Hy"); 
        request.setScheduleDeliveryTime(scheduleDeliveryTime); 
        request.setValidityPeriod(validityPeriod); 
        request.setEsmClass(esmClass); 
        request.setProtocolId(protocolId); 
        request.setPriorityFlag(priorityFlag); 
        request.setRegisteredDelivery(registeredDelivery); 
        request.setDataCoding(dataCoding); 
        request.setSmDefaultMsgId(smDefaultMsgId); 
        String ipAddress = Bundle.getInstance().getValue(Bundle.Application_Contants.IP_ADDRESS.toString()); 
        int port = Integer.valueOf(Bundle.getInstance().getValue(Bundle.Application_Contants.PORT.toString())); 
        long receiveTimeOut = Long.valueOf(Bundle.getInstance().getValue(Bundle.Application_Contants.RECEIVE_TIMEOUT.toString())); 
    
        TCPIPConnection connection = new TCPIPConnection(ipAddress,port); 
        connection.setReceiveTimeout(receiveTimeOut); 
        customSession = new Session(connection); 
    
    
        // send the request 
        System.out.println("Submit Multi request " + request.debugString()); 
        if (!asynchronous) { 
         customSession.submitMulti(request); 
        } else { 
         response = customSession.submitMulti(request); 
         System.out.println("Submit Multi response " + response.debugString()); 
         messageId = response.getMessageId(); 
        } 
    
    } catch (Exception e) { 
        log.error(e,e); 
        System.out.println("Submit Multi operation failed. " + e.getMessage()); 
    } finally { 
    } 
    

    }

그리고 예외는 다음과 같습니다

java.lang.NullPointerException 
at org.smpp.Session.send(Session.java:1100) 
at org.smpp.Session.send(Session.java:1173) 
at org.smpp.Session.submitMulti(Session.java:727) 
at com.noetic.topUpBooster.smpp.JarConnection.submitMulti(JarConnection.java:413) 
at com.noetic.sdp.alerts.JarCheck.run(JarCheck.java:34) 
Submit Multi operation failed. null 

사람은 생각을 가지고 있습니까?

+0

연결 유형은 무엇입니까? t 또는 r 또는 tr? –

답변

0

코드가 ESME로 작동한다고 가정하면 SubmitSM, SubmitMultiSM 또는 DataSM을 보내기 전에 바인드 요청 (BindTransmitter 또는 BindTransciever를 통한)을 보내야합니다.

+0

이제 오류가 표시되지 않습니다. 메시지는 지정된 대상 (msisdn)으로 배달되지 않습니다. – IConfused

+0

이 2 차적 문제는 (1) 모든 대상 번호가 동일해야합니다. 나는 독특한 목적지로 시험해 보려고합니다. (2) 바인드 요청에는 유효한 사용자 이름/암호 조합이 있어야합니다. 바인드 요청이 받아 들여지는지 확인하기 위해 응답 개체를 검사 할 것입니다. –

+0

잘 감사드립니다. 운영자에게 몇 가지 문제가 있었기 때문에 나는 다른 운영자의 다른 msisdn을 시도했으며 매력처럼 작동했으며 동일한 msisdn을 사용하는 데 문제가 없었습니다. 다시 한번 감사합니다. – IConfused