【问题标题】:Unable to set SMPP optional parameter in go code无法在 go 代码中设置 SMPP 可选参数
【发布时间】:2016-09-21 11:50:03
【问题描述】:

我正在研究 SMPP 协议,并尝试用 golang 代码和 selenium smpp 模拟器实现一个简单的发送器。我从 github 找到了一个包“CodeMonkeyKevin/smpp34”。 但是我无法设置“user_message_reference”可选参数。

我通过添加这些行(就在写操作之前)稍微修改了“transmitter.go”文件中的“SubmitSm”函数:

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

但这不起作用。

我提供了值 tag=0516(int 等效于 0x0204 user_message_reference)length=02value="91"

在我可以在 SMSC 模拟器中看到“tag=516,len=2,value=0x3931”的响应中,值字段似乎不适合我;响应中的“message_id”仍然通过在最后一个 message_id 上加 1 来继续其序列

有人可以帮我将“user_message_reference”可选参数设置为“submit_sm”请求吗?

提前致谢。

【问题讨论】:

  • “无法设置 user_message_reference 可选参数”是什么意思?请举例说明您尝试了什么、预期会发生什么以及您实际看到了什么。
  • 我在 setTVLField 函数中提供了值 tag=0516(int 等效于 0x0204 user_message_reference)length=02 和 value="91"。我可以看到 "tag=516,len=2,value=0x3931" 出现在 SMSC 模拟器中,但该值似乎不适合我;并且响应中的 message_id 仍然通过将最后一个 message_id 加 1 来继续其序列。
  • @JimB 有帮助吗?

标签: go smpp


【解决方案1】:

你没有编辑transmitter.go中的函数

只需在您的 submit_sm 之后设置您的 tlv 字段

例子

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

如果您使用 kevin 的包,这是添加 tlv 值的正确方法 见https://github.com/CodeMonkeyKevin/smpp34/issues/9 Additional parameters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多