The Short Message Peer-to-Peer (SMPP) is an open, industry-standard protocol used in telecommunications industry in order to establish and exchange messages between messaging platforms and Short Message Service Centers (SMSC).

Bind supports version 3.4 of the SMPP protocol

Establishing connectivity

The following parameters are required in order to establish the connectivity to Bind platform

ParameterRequiredDescription
system_idProvided by Sales representative
passwordProvided by Sales representative
ipProvided by Sales representative

You can establish the connection by any of the following bind types:

  • bind_transmitter (able to send messages but unable to receive delivery reports)
  • bind_transceiver (able to send messages and receive delivery reports)
  • bind_receiver (able to receive delivery reports)

Supported PDU's (Protocol data units)

The following PDU's are supported:

  • bind_transmitter
  • bind_transceiver
  • bind_receiver
  • submit_sm
  • deliver_sm
  • enquire_link
  • unbind

Enquire link

Once bound the enquire links are going to be exchanged between two connected parties with a default value of 30 seconds between the PDU. Both parties can send enquire link pdu's in order to keep the connection alive when there is no other pdu's being exchanged.

Message encoding

The following data coding values are supported:

  • 0 - GSM7
  • 1 - Latin1
  • 8 - Unicode/UCS-2

Message length

  • GSM7 encoded messages longer than 160 characters will have a maximum length of 153 characters per PDU, the rest of the payload is being used for UDH (User data header)
  • Unicode/UCS2 encoded messages longer than 70 characters will have a maximum length of 67 characters per PDU, the rest of the payload is being used for UDH (User data header)

User data header (UDH) is a part of the PDU used to carry the meta information such as count of messages expected along with the information about the current message.

Command status

The following command status values are being returned by the SMPP server:

bind_resp

Command statusDescription
0x000DBind failed due to failed authentication

submit_sm_resp

Command statusDescription
0x0000Message accepted
0x0058Throttling error (ESME has exceeded allowed msg limits)
0x0008System error
0x0014Message queue full
0x401Out of balance
0x402Account disabled
0x000AInvalid source address
0x0048Invalid source address TON
0x0049Invalid source address NPI
0x000BInvalid destination address
0x0050Invalid destination address TON
0x0051Invalid destination address NPI
0x0043Invalid ESM Class
0x0007Invalid registered delivery flag
0x0001Message length is invalid
0x0104Invalid data coding scheme
0x0003Invalid command ID

Delivery reports

When bound with bind_transceiver and bind_receiver your SMPP session is going to receive deliver_sm PDU's in cases where the destinations and suppliers support them.

The deliver_pdu message has the following format:

id: c4c1749d-96ff-419a-b828-9d307a277c4e sub:001 dlvrd:001 submit date:2302181515 done date:2302181515 stat: DELIVRD err:000 Text:

Where:

  • id - represents the message id received on submit_sm_resp
  • sub - indicates whether the message was successfully submitted
  • dlvrd - indicates whether the message was delivered
  • submit date - provides the date of submission
  • done date - provides the date of delivery
  • stat - represents the state of the message, where possible values are:
    • DELIVRD
    • UNDELIV
    • EXPIRED
    • UNKNOWN
    • REJECTED

The following error codes can be received as a part of delivery report PDU within err field:

ECERROR DESCRIPTION
0DELIVERED
1UNKNOWN_SUBSCRIBER
5UNIDENTIFIED_SUBSCRIBER
9ILLEGAL_SUBSCRIBER
11TELESERVICE_NOT_PROVISIONED
13CALL_BARRED
21FACILITY_NOT_SUPPORTED
27ABSENT_SUBSCRIBER
31SUBSCRIBER_BUSY_FOR_MT_SMS
32DELIVERY_FAILURE
34SYSTEM_FAILURE
36UNEXPECTED_DATA_VALUE
37MEMORY_CAPACITY_EXCEEDED
38PREFIX_NOT_RESOLVED
39IMSI_BLACKLISTED
40DEST_ADDRESS_BLACKLISTED
41TIME_OUT
43INVALID_ORIGINATOR_ADDRESS
100GENERAL_ERROR
200EQUIPMENT_PROTOCOL_ERROR
201UNKNOWN_MSC
202CONGESTION_ERROR
203PARAMETER_MISSMATCH
204INITIATING_RELEASE
205POTENTIAL_VERSION_INCOMPATIBILITY
206REMOTE_NODE_NOT_REACHABLE
207MTP_FAILURE
208NETWORK_CONGESTION
209SIGNALLING_FAILURE
210ABNORMAL_MAP_DIALOG
211INVALID_PDU_FORMAT
300ABORTED_RETRY
301VALIDITY_PERIOD_EXPIRED
346CLIENT_NETWORK_FORBIDDEN (In a case of MNP being performed)
351INVALID_PREFIX_OR_DESTINATION
4100EXPIRED_ON_FORCE_RETRY (When the time to live has been configured for delivery and it has expired)