Отправка нескольких смс через SMPP

Я сразу перейду к своему вопросу.

  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

у кого-нибудь есть идея?


person IConfused    schedule 18.06.2013    source источник
comment
Какой будет тип подключения? т или р или тр?   -  person Ashekur Rahman Molla Asik    schedule 09.12.2013


Ответы (1)


Предполагая, что ваш код действует как ESME, запрос на привязку (через BindTransmitter или BindTransciever) должен быть отправлен до отправки любого SubmitSM, SubmitMultiSM или DataSM.

person Wahid Sadik    schedule 18.06.2013
comment
Теперь он не показывает никаких ошибок. но сообщение не доставляется по указанному адресу (msisdn). - person IConfused; 18.06.2013
comment
Что касается этой вторичной проблемы: (1) все ваши номера назначения одинаковы. Я бы попробовал тестировать с уникальными направлениями. (2) Запрос на привязку должен содержать допустимую комбинацию имени пользователя и пароля. Я бы проверил объект ответа, чтобы увидеть, был ли принят запрос на привязку. - person Wahid Sadik; 18.06.2013
comment
Хорошо, спасибо, теперь это работает. так как возникла проблема с оператором, я попробовал другой msisdn другого оператора, и это сработало как шарм, и не было проблем с использованием того же msisdn. Еще раз спасибо. - person IConfused; 18.06.2013
comment
Существует также проблема, что не все SMSC поддерживают submit_multi. - person pilsetnieks; 18.06.2013