2016-09-21 7 views
0

IMP는 SMPP 프로토콜을 연구하고 golang 코드와 셀렌 smpp 시뮬레이터을 사용하여 간단한 송신기를 구현하려고했습니다. github의 "CodeMonkeyKevin/smpp34"패키지를 발견했습니다. 그러나 Iam은 "user_message_reference"선택적 매개 변수를 설정할 수 없습니다.go 코드에서 SMPP 옵션 매개 변수를 설정할 수 없습니다.

err = p.SetTLVField(tag, length, []byte(value)) 
    if err != nil { 
     fmt.Println("Set TLV failed") 
     return 0, err 
    } 

을하지만이 작동하지 않습니다 :

나는 약간 (단지 쓰기 작업 전에)이 행을 추가하여 "transmitter.go"파일 내부의 "SubmitSm"기능을 수정했습니다.

태그 = 0516 (0x0204 user_message_reference의 INT 당량) 길이 = 02값 = "91"값을 제공.

SMSC 시뮬레이터에서 "tag = 516, len = 2, value = 0x3931"이라는 응답이 표시 될 때 값 필드가 나에게 적절하지 않은 것으로 보입니다. 또한 응답이 여전히 하나가 "SUBMIT_SM"요청에 "user_message_reference"선택적 매개 변수를 설정하는 나를 도울 수있는 마지막 MESSAGE_ID

과 1을 추가하여 순서를 계속에서 "을 MESSAGE_ID"?

미리 감사드립니다.

+0

무엇을 의미합니까? "user_message_reference 선택적 매개 변수를 설정할 수 없습니다"? 시도한 내용, 예상되는 내용 및 실제로 보았던 내용의 예를 보여주십시오. – JimB

+0

setTVLField 함수에서 값 tag = 0516 (0x0204 user_message_reference의 int와 동일) length = 02 및 value = "91"을 제공했습니다. SMSC 시뮬레이터에 "tag = 516, len = 2, value = 0x3931"이 표시되지만 값이 적절하지 않은 것으로 보입니다. 응답의 message_id는 마지막 message_id와 함께 1을 더하여 계속 계속됩니다. – Hardy

+0

@ 짐바는 그 도움을 했습니까? – Hardy

답변

0

당신은

그냥 SUBMIT_SM

예 후 TLV 필드를 설정 transmitter.go에 편집 기능이없는

pdu, err  := trx.Smpp.SubmitSm("+254720000000", 
pdu.GetField("source_addr").String(), msg, &smpp.Params{}) 

pdu.SetTLVField(0x0501, 1, []byte{2}) #eg a ussd_service_op 

이것은 당신의 TLV를 추가 할 수있는 적절한 방법입니다 kevin의 패키지를 사용하는 경우 값 https://github.com/CodeMonkeyKevin/smpp34/issues/9 Additional parameters