2012-02-10 8 views
1

私はjsmpp経由でUSSDメッセージを送信します。私がメッセージを送信すると、私はこのエラーを取得するSMPP:否定応答00000008

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

を使用しますNumberingPlanIndicatorを知っていますかソースとターゲットの電話機のTypeOfNumberとTypeOfNumber? – szhem

+0

TypeOfNumberはわかりませんが、NumberingPlanIndicatorはISDN – totali

+0

これらのパラメータを指定しようとしましたか?あなたの番号が国際的な形式で指定されている場合は、TypeOfNumberがINTERNATIONALでなければなりません。短い番号などがある場合は、 – szhem

答えて

3

パラメータ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; 
}