SMPP (3.4) Client Library in pure Go.
This library is well tested with SMSC simulators:
go get -u github.com/linxGnu/gosmpp
- From
v0.1.4
, gosmpp is written in event-based style and fully-manage your smpp session, connection, error, rebinding, etc. You only need to implement some hooks:
trans, err := gosmpp.NewSession(
gosmpp.TRXConnector(gosmpp.NonTLSDialer, auth),
gosmpp.Settings{
EnquireLink: 5 * time.Second,
ReadTimeout: 10 * time.Second,
OnSubmitError: func(_ pdu.PDU, err error) {
log.Fatal("SubmitPDU error:", err)
},
OnReceivingError: func(err error) {
fmt.Println("Receiving PDU/Network error:", err)
},
OnRebindingError: func(err error) {
fmt.Println("Rebinding but error:", err)
},
OnPDU: handlePDU(),
OnClosed: func(state gosmpp.State) {
fmt.Println(state)
},
}, 5*time.Second)
if err != nil {
log.Println(err)
}
defer func() {
_ = trans.Close()
}()
- Full example could be found: here
- In this example, you should run smsc first:
- Please point to: https://github.com/linxGnu/gosmpp/blob/master/example/smsc
- Build & Run SMSC (g++ required):
./run.sh
- Next is build and run: https://github.com/linxGnu/gosmpp/blob/master/example/main.go
- Build:
go build
- Run:
./example
- Build:
- You should see: logs of communication between SMSC and Example. Each SubmitSM will trigger SMSC to simulate a MO.
- In this example, you should run smsc first:
Full example could be found: gist
- bind_transmitter
- bind_transmitter_resp
- bind_receiver
- bind_receiver_resp
- bind_transceiver
- bind_transceiver_resp
- outbind
- unbind
- unbind_resp
- submit_sm
- submit_sm_resp
- submit_sm_multi
- submit_sm_multi_resp
- data_sm
- data_sm_resp
- deliver_sm
- deliver_sm_resp
- query_sm
- query_sm_resp
- cancel_sm
- cancel_sm_resp
- replace_sm
- replace_sm_resp
- enquire_link
- enquire_link_resp
- alert_notification
- generic_nack