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
Parameter | Required | Description |
---|---|---|
system_id | ✅ | Provided by Sales representative |
password | ✅ | Provided by Sales representative |
ip | ✅ | Provided 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 status | Description |
---|---|
0x000D | Bind failed due to failed authentication |
submit_sm_resp
Command status | Description |
---|---|
0x0000 | Message accepted |
0x0058 | Throttling error (ESME has exceeded allowed msg limits) |
0x0008 | System error |
0x0014 | Message queue full |
0x401 | Out of balance |
0x402 | Account disabled |
0x000A | Invalid source address |
0x0048 | Invalid source address TON |
0x0049 | Invalid source address NPI |
0x000B | Invalid destination address |
0x0050 | Invalid destination address TON |
0x0051 | Invalid destination address NPI |
0x0043 | Invalid ESM Class |
0x0007 | Invalid registered delivery flag |
0x0001 | Message length is invalid |
0x0104 | Invalid data coding scheme |
0x0003 | Invalid 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 onsubmit_sm_resp
sub
- indicates whether the message was successfully submitteddlvrd
- indicates whether the message was deliveredsubmit date
- provides the date of submissiondone date
- provides the date of deliverystat
- 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:
EC | ERROR DESCRIPTION |
---|---|
0 | DELIVERED |
1 | UNKNOWN_SUBSCRIBER |
5 | UNIDENTIFIED_SUBSCRIBER |
9 | ILLEGAL_SUBSCRIBER |
11 | TELESERVICE_NOT_PROVISIONED |
13 | CALL_BARRED |
21 | FACILITY_NOT_SUPPORTED |
27 | ABSENT_SUBSCRIBER |
31 | SUBSCRIBER_BUSY_FOR_MT_SMS |
32 | DELIVERY_FAILURE |
34 | SYSTEM_FAILURE |
36 | UNEXPECTED_DATA_VALUE |
37 | MEMORY_CAPACITY_EXCEEDED |
38 | PREFIX_NOT_RESOLVED |
39 | IMSI_BLACKLISTED |
40 | DEST_ADDRESS_BLACKLISTED |
41 | TIME_OUT |
43 | INVALID_ORIGINATOR_ADDRESS |
100 | GENERAL_ERROR |
200 | EQUIPMENT_PROTOCOL_ERROR |
201 | UNKNOWN_MSC |
202 | CONGESTION_ERROR |
203 | PARAMETER_MISSMATCH |
204 | INITIATING_RELEASE |
205 | POTENTIAL_VERSION_INCOMPATIBILITY |
206 | REMOTE_NODE_NOT_REACHABLE |
207 | MTP_FAILURE |
208 | NETWORK_CONGESTION |
209 | SIGNALLING_FAILURE |
210 | ABNORMAL_MAP_DIALOG |
211 | INVALID_PDU_FORMAT |
300 | ABORTED_RETRY |
301 | VALIDITY_PERIOD_EXPIRED |
346 | CLIENT_NETWORK_FORBIDDEN (In a case of MNP being performed) |
351 | INVALID_PREFIX_OR_DESTINATION |
4100 | EXPIRED_ON_FORCE_RETRY (When the time to live has been configured for delivery and it has expired) |