SMPP: отрицательный ответ 00000008 - PullRequest
1 голос
/ 10 февраля 2012

Я хочу отправлять USSD-сообщения через jsmpp.Когда я отправляю сообщение, я получаю эту ошибку

org.jsmpp.extra.NegativeResponseException: Negative response 00000008 found
        at org.jsmpp.session.AbstractSession.validateResponse(AbstractSession.java:215)
        at org.jsmpp.session.AbstractSession.executeSendCommand(AbstractSession.java:271)
        at org.jsmpp.session.SMPPSession.submitShortMessage(SMPPSession.java:320)

Вот мой код:

            int i = 2;
            short j = 2;
            OptionalParameter op1 = new OptionalParameter.Byte(Tag.USSD_SERVICE_OP, (byte) i);
            OptionalParameter op2 = new OptionalParameter.Byte(Tag.ITS_SESSION_INFO, (byte) j);
            OptionalParameter[] op = new OptionalParameter[2];

            op[0] = op2;
            op[1] = op1;

            messageId = session.submitShortMessage("USSD", TypeOfNumber.UNKNOWN,
                    NumberingPlanIndicator.UNKNOWN, sourceNumber, TypeOfNumber.UNKNOWN,
                    NumberingPlanIndicator.UNKNOWN, recipient, new ESMClass(142),
                    (byte) 0, (byte) 1, timeFormatter.format(new Date()), null,
                    new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE), (byte) 0,
                    DataCoding.newInstance(0),
                    (byte) 0, text.getBytes(), op);

1 Ответ

3 голосов
/ 09 октября 2012

Параметр ITS_SESSION_INFO в целом используется для поддержки сеанса, используйте

OptionalParameter op2 = null;
for (OptionalParameter optionalParameter : deliverSm.getOptionalParametes()) {
    if (optionalParameter.tag == Tag.ITS_SESSION_INFO.code()) {
       op2 = optionalParameter;
    }
}
int i = 2;
OptionalParameter op[] = new OptionalParameter[2];
OptionalParameter op1 = new OptionalParameter.Byte(Tag.USSD_SERVICE_OP, (byte) i);
op[0] = op1;
if (op2 != null) {
    op[1] = op2;
}
...