使用Golang SMPP协议发送短信时出错:地址未知

zd287kbt  于 5个月前  发布在  Go
关注(0)|答案(2)|浏览(66)

我正在使用Golang SMPP协议发送短信。消息正在成功发送,但收件人手机上显示的源地址为“未知地址”。
这是我的代码-- main,开始

package main

import (
    "log"

    "github.com/fiorix/go-smpp/smpp"
    "github.com/fiorix/go-smpp/smpp/pdu/pdufield"
    "github.com/fiorix/go-smpp/smpp/pdu/pdutext"
)

func main() {
    tx := &smpp.Transmitter{
        Addr:   "server:port",
        User:   "userId",
        Passwd: "password",
    }
    // Create persistent connection, wait for the first status.
    conn := <-tx.Bind()
    if conn.Status() != smpp.Connected {
        log.Fatal(conn.Error())
    }
    sm, err := tx.Submit(&smpp.ShortMessage{
        Src:      "MyCompany",
        Dst:      "25*********",
        Text:     pdutext.Raw("Sample sms"),
        Register: pdufield.NoDeliveryReceipt,
    })
    if err != nil {
        log.Fatal(err)
    }
    log.Println("Message ID:", sm.RespID())
}

字符串
-- go.mod

module sms

go 1.21.0

require github.com/fiorix/go-smpp v0.0.0-20210403173735-2894b96e70ba

require golang.org/x/text v0.3.6 // indirect


Image我遵循的示例:https://pkg.go.dev/github.com/fiorix/go-smpp/smpp#example-Transmitter

fjnneemd

fjnneemd1#

根据SMPP规范,源地址(通常称为“发件人ID”)最多可以包含11个字母数字字符。您示例中的字符串“MyCompany”长于允许的长度,这可能是导致问题的原因。
尝试使用较短的字母数字字符串作为源地址:

sm, err := tx.Submit(&smpp.ShortMessage{
    Src:      "MyCo",
    Dst:      "25*********",
    Text:     pdutext.Raw("Sample sms"),
    Register: pdufield.NoDeliveryReceipt,
})

字符串

deikduxw

deikduxw2#

我已经花了相当多的时间来搜索这个问题的解决方案。我在这个链接https://melroselabs.com/docs/tutorials/sms/send-sms-with-smpp-using-go/上从另一个go-smpp库中找到了解决方案的提示。我只是添加了:SourceAddrTON:5SourceAddrNPI:0,现在它工作了![在sms src上显示MyCompany]。这里是完整的工作代码。

package main

import (
    "log"

    "github.com/fiorix/go-smpp/smpp"
    "github.com/fiorix/go-smpp/smpp/pdu/pdufield"
    "github.com/fiorix/go-smpp/smpp/pdu/pdutext"
)

func main() {
    tx := &smpp.Transmitter{
        Addr:   "server:port",
        User:   "userId",
        Passwd: "password",
    }
    // Create persistent connection, wait for the first status.
    conn := <-tx.Bind()
    if conn.Status() != smpp.Connected {
        log.Fatal(conn.Error())
    }
    sm, err := tx.Submit(&smpp.ShortMessage{
        Src:      "MyCompany",
        Dst:      "25*********",
        Text:     pdutext.Raw("Sample sms"),
        Register: pdufield.NoDeliveryReceipt,
        // **ADDED THESS 2 FIELDS**
        SourceAddrTON: 5,
        SourceAddrNPI: 0,
    })
    if err != nil {
        log.Fatal(err)
    }
    log.Println("Message ID:", sm.RespID())
}

字符串

相关问题