The short message peer-to-peer protocol (SMPP) is a telecommunications industry protocol for exchanging SMS messages between SMS peer entities such as short message service centers. It is often used to allow third parties (for example, value-added service providers like news organizations) to submit messages, sometimes in bulk.
The protocol is based on pairs of request/response PDUs (protocol data units, or packets) exchanged over OSI layer 4 (TCP/IP session or X.25 SVC3) connections. PDUs are binary encoded for efficiency.
The most commonly used versions of SMPP are v3.3 (the most widely supported standard) and v3.4, which adds transceiver support (single connections that can send and receive messages). Data exchange can be synchronous, (each peer waits for a response for each PDU being sent) or asynchronous (messages are received and transmitted in independent threads with the use of buffers and timers). The latest version of SMPP is v5.0.
To configure SMPP parameters, add an additional SMS configuration.
Use these SMPP keys when you configure WatchGuard Administrator.
Key | Used at | Possible Values | Default Value | Description |
---|---|---|---|---|
smpp-version | Bind | 51 – 3.3 52 – 3.4 |
51 | This parameter is used to indicate the version of the SMPP protocol. The following interface version values are defined, 0-51 (0x00-0x33) Indicates that the EMSE supports version 3.3 or earlier of the SMPP protocol. 52 (0x34) Indicates that the ESME is supporting SMPP version 3.4 |
smpp-timeout | Connect | Integer | 10000 | Timeout used when trying to communicate with SMPP server. Defined in milliseconds. |
smpp-bind-system-type | Bind | String | The system_type parameter is used to categorize the type of ESME that is binding to the SMSC. Examples include “VMS” (voice mail system) and “OTA” (over-the-air activation system). Specification of the system_type is optional - some SMSCs may not require ESMEs to provide this detail. In this case, the ESME can set the system_type to NULL. | |
smpp-bind-addr-ton | Bind | 0 – Unknown 1 – International 2 – National 3 – Network Specific 4 – Subscriber Number 5 – Alphanumeric 6 - Abbreviated |
0 | Indicates Type of Number of the ESME address. If not known set to Unknown. |
smpp-bind-addr-npi | Bind | 0 – Unknown 1 – ISDN 3 – Data 4 – Telex 6 – Land Mobile 8 – National 9 – Private 10 – ERMES 14 – Internet 18 – WAP Client Id |
0 | Numbering Plan Indicator for ESME address. If not known set to Unknown. |
smpp-submit-service-type | Submit | String | The service_type parameter can be used to indicate the SMS Application service associated with the message. “” (NULL) Default, “CMT” Cellular Messaging, “CPT” Cellular Paging, “VMN” Voice Mail Notification, “VMA” Voice Mail Alerting, “WAP” Wireless Application Protocol, “USSD” Unstructured Supplementary Services Data | |
smpp-submit-dest-addr-ton | Submit | 0 – Unknown 1 – International 2 – National 3 – Network Specific 4 – Subscriber Number 5 – Alphanumeric 6 - Abbreviated |
1 | Destination Address TON. Type of Number for destination. |
smpp-submit-dest-addr-npi | Submit | 0 – Unknown 1 – ISDN 3 – Data 4 – Telex 6 – Land Mobile 8 – National 9 – Private 10 – ERMES 14 – Internet 18 – WAP Client Id |
0 | Destination Address NPI. Numbering Plan Indicator for destination. |
smpp-submit-esm-class | Submit | Integer | 0 | The esm_class parameter is used to indicate special message attributes associated with the short message. |
smpp-submit-protocol-id | Submit | Integer | 0 | GSM: Set according to GSM 03.40 [GSM 03.40], ANSI-136 (TDMA): For mobile terminated messages, this field is not used and is therefore ignored by the SMSC. For ANSI-136 mobile originated messages, the SMSC should set this value to NULL. IS-95 (CDMA): For mobile terminated messages, this field is not used and is therefore ignored by the SMSC. For IS-95 mobile originated messages, the SMSC should set this value to NULL. |
smpp-submit-source-addr-ton | Submit | 0 – Unknown 1 – International 2 – National 3 – Network Specific 4 – Subscriber Number 5 – Alphanumeric 6 - Abbreviated |
0 | Source Address TON. Type of Number for source address. If not known, set to 0 (Unknown). |
smpp-submit-source-addr-npi | Submit | 0 – Unknown 1 – ISDN 3 – Data 4 – Telex 6 – Land Mobile 8 – National 9 – Private 10 – ERMES 14 – Internet 18 – WAP Client Id |
0 | Source Address NPI. Numbering Plan Indicator for source address. If not known, set to 0 (Unknown). |
smpp-submit-source-addr | Submit | Specifies the address of SME which originated this message. An ESME which is implemented as a single SME address, may set this field to NULL to allow the SMSC to default the source address of the submitted message. | ||
smpp-submit-data-coding | Submit | Integer | 3 | Encoding of data according the SMPP 3.4 specification, section 5.2.19. Example data encodings are “SMSC Default Alphabet” (0), IA5/ASCII (1), Octet unspecified (2), Latin 1/ISO-8859-1 (3), Cyrllic/ISO-8859-5 (6), Latin/Hebrew/ISO-8859-8 (7). |
smpp-submit-data-charset | Submit | String | ISO8859-1 | Character set to use in conjunction with Data Coding when converting from Unicode to output format. |
If you receive an SMPP error, you can use this information to help you determine the source of the error.
Error | Error Code | Description |
---|---|---|
ESME_ROK | 0x00000000 | No Error |
ESME_RINVMSGLEN | 0x00000001 | Message Length is invalid |
ESME_RINVCMDLEN | 0x00000002 | Command Length is invalid |
ESME_RINVCMDID | 0x00000003 | Invalid Command ID |
ESME_RINVBNDSTS | 0x00000004 | Incorrect BIND Status for given command |
ESME_RALYBND | 0x00000005 | ESME Already in Bound State |
ESME_RINVPRTFLG | 0x00000006 | Invalid Priority Flag |
ESME_RINVREGDLVFLG | 0x00000007 | Invalid Registered Delivery Flag |
ESME_RSYSERR | 0x00000008 | System Error |
Reserved | 0x00000009 | Reserved |
ESME_RINVSRCADR | 0x0000000A | Invalid Source Address |
ESME_RINVDSTADR | 0x0000000B | Invalid Dest Addr |
ESME_RINVMSGID | 0x0000000C | Message ID is invalid |
ESME_RBINDFAIL | 0x0000000D | Bind Failed |
ESME_RINVPASWD | 0x0000000E | Invalid Password |
ESME_RINVSYSID | 0x0000000F | Invalid System ID |
Reserved | 0x00000010 | Reserved |
ESME_RCANCELFAIL | 0x00000011 | Cancel SM Failed |
Reserved | 0x00000012 | Reserved |
ESME_RREPLACEFAIL | 0x00000013 | Replace SM Failed |
ESME_RMSGQFUL | 0x00000014 | Message Queue Full |
ESME_RINVSERTYP | 0x00000015 | Invalid Service Type |
Reserved | 0x00000016-0x00000032 | Reserved |
ESME_RINVNUMDESTS | 0x00000033 | Invalid number of destinations |
ESME_RINVDLNAME | 0x00000034 | Invalid Distribution List name |
Reserved | 0x00000035-0x0000003F | Reserved |
ESME_RINVDESTFLAG | 0x00000040 | Destination flag is invalid (submit_multi) |
Reserved | 0x00000041 | Reserved |
ESME_RINVSUBREP | 0x00000042 | Invalid ‘submit with replace’ request (i.e. submit_sm with replace_if_present_flag set) |
ESME_RINVESMCLASS | 0x00000043 | Invalid esm_class field data |
ESME_RCNTSUBDL | 0x00000044 | Cannot Submit to Distribution List |
ESME_RSUBMITFAIL | 0x00000045 | submit_sm or submit_multi failed |
Reserved | 0x00000046-0x00000047 | Reserved |
ESME_RINVSRCTON | 0x00000048 | Invalid Source address TON |
ESME_RINVSRCNPI | 0x00000049 | Invalid Source address NPI |
ESME_RINVDSTTON | 0x00000050 | Invalid Destination address TON |
Error | Error Code | Description |
ESME_RINVDSTNPI | 0x00000051 | Invalid Destination address NPI |
Reserved | 0x00000052 | Reserved |
ESME_RINVSYSTYP | 0x00000053 | Invalid system_type field |
ESME_RINVREPFLAG | 0x00000054 | Invalid replace_if_present flag |
ESME_RINVNUMMSGS | 0x00000055 | Invalid number of messages |
Reserved | 0x00000056-0x00000057 | Reserved |
ESME_RTHROTTLED | 0x00000058 | Throttling error (ESME has exceeded allowed message limits) |
Reserved | 0x00000059-0x00000060 | Reserved |
ESME_RINVSCHED | 0x00000061 | Invalid Scheduled Delivery Time |
ESME_RINVEXPIRY | 0x00000062 | Invalid message validity period (Expiry time) |
ESME_RINVDFTMSGID | 0x00000063 | Predefined Message Invalid or Not Found |
ESME_RX_T_APPN | 0x00000064 | ESME Receiver Temporary App Error Code |
ESME_RX_P_APPN | 0x00000065 | ESME Receiver Permanent App Error Code |
ESME_RX_R_APPN | 0x00000066 | ESME Receiver Reject Message Error Code |
ESME_RQUERYFAIL | 0x00000067 | query_sm request failed |
Reserved | 0x00000068-0x000000BF | Reserved |
ESME_RINVOPTPARSTREAM | 0x000000C0 | Error in the optional part of the PDU Body. |
ESME_ROPTPARNOTALLWD | 0x000000C1 | Optional Parameter not allowed |
ESME_RINVPARLEN | 0x000000C2 | Invalid Parameter Length. |
ESME_RMISSINGOPTPARAM | 0x000000C3 | Expected Optional Parameter missing |
ESME_RINVOPTPARAMVAL | 0x000000C4 | Invalid Optional Parameter Value |
Reserved | 0x000000C5-0x000000FD | Reserved |
ESME_RDELIVERYFAILURE | 0x000000FE | Delivery Failure (used for data_sm_resp) |
ESME_RUNKNOWNERR | 0x000000FF | Unknown Error |
Reserved for SMPP extension | 0x00000100-0x000003FF | Reserved for SMPP extension |
Reserved for SMSC vendor specific errors | 0x00000400-0x000004FF | Reserved for SMSC vendor specific errors |
Reserved | 0x00000500-0xFFFFFFFF | Reserved |
To see what packets are sent to and received from the SMPP gateway, select Monitor System > Logging > Manage Global Logging Settings and select Enable debug logging. Search the debug log for SMPP.
If an error occurs when communicating, the System log may echo something like: SMPP command failed with error code 0xd.