Reference section - SMPP
SMPP Protocol Implementation Conformance Statement (PICS)
SMPP PICS
SMPP (Short Message Peer-to-Peer) is an open, industry standard protocol designed to provide a flexible data communications interface for the transfer of short message data between External Short Message Entities (ESME), Routing Entities (RE) and Message Centres (MC). The SMPP protocol is a means by which applications can send SMS messages to mobile devices and receive SMS from mobile devices.
Tyr SMS Gateway
to
and worldwideSMPP PICS
Abbreviated SMPP Protocol Implementation Conformance Statement (SMPP PICS)
This SMPP PICs statement is made in relation to the Tyr SMS Gateway and SMPP SMS Gateway services from Melrose Labs.
1. SMPP Operations Supported
Item | Functional Unit/Description | Supported |
---|---|---|
PDU-OUTBIND | Is the outbind PDU supported? | NO |
PDU-BIND-TRANSMITTER | Is the bind transmitter PDU supported? | YES |
PDU-BIND-RECEIVER | Is the bind receiver PDU supported? | YES |
PDU-BIND-TRANSCEIVER | Is the bind transceiver PDU supported? | YES |
PDU-UNBIND | Is the unbind PDU supported? | YES |
PDU-ESME-GENERIC-NACK | Is the generic_nack PDU initiated by the EMSE supported? | YES |
PDU-SMSC-GENERIC-NACK | Is the generic_nack PDU initiated by the SMSC supported? | YES |
PDU-SUBMIT-SM | Is the submit_sm PDU supported?
| YES
|
PDU-SUBMIT-MULTI | Is the submit_multi PDU supported? | NO |
PDU-DELIVER-SM | Is the deliver_sm PDU supported?
| YES |
PDU-ESME-DATA | Is the data_sm PDU initiated by the EMSE supported?
| YES |
PDU-SMSC-DATA | Is the data_sm PDU initiated by the SMSC supported? | YES |
PDU-QUERY | Is the query_sm PDU supported? | YES |
PDU-CANCEL | Is the cancel_sm PDU supported? | YES |
PDU-REPLACE | Is the replace_sm PDU supported? | YES |
PDU-ESME-ENQUIRE-LINK | Is the enquire_link PDU initiated by the EMSE supported? | YES |
PDU-SMSC-ENQUIRE-LINK | Is the enquire_link PDU initiated by the SMSC supported? | YES |
PDU-ALERT | Is the alert_notification PDU supported? | YES |
Bind PDU
Item | Functional Unit/Description | Supported |
---|---|---|
BIND-1 | Is sc_interface_version field supported in a response to the operation? | YES |
BIND-2 | Is the interface_version field supported in the bind_transceiver operation? | YES |
Submit_sm PDU
Item | Functional Unit/Description | Supported |
---|---|---|
SUBMIT-1 | Is the use of different values in the service_type field allowed? | YES |
SUBMIT-2 | Is the use of default values in the source_addr fields supported? | YES |
SUBMIT-3 | Is scheduled_delivery supported? | YES |
SUBMIT-4 | Is the replace_if_present functionality supported? | YES |
SUBMIT-5 | Are pre-defined short messages supported? | NO |
SUBMIT-6 | Is the use of the validity_period field supported? | YES |
SUBMIT-7 | Is the user_message_reference field supported? | YES |
SUBMIT-8 | Is the source_port field supported? | YES |
SUBMIT-9 | Is the destination_port field supported? | YES |
SUBMIT-10-1 | Is the sar_msg_ref_num, field supported? | YES |
SUBMIT-10-2 | Is the sar_total_segments field supported? | YES |
SUBMIT-10-3 | Is the sar_segment_seqnum field supported? | YES |
SUBMIT-11 | Is the more_messages_to_send field supported? | |
SUBMIT-12 | Is the message_payload field supported? | YES |
SUBMIT-13 | Is the privacy_indicator field supported? | |
SUBMIT-14-1 | Is the callback_num fields supported? | |
SUBMIT-14-2 | Is the callback_num_atag fields supported? | |
SUBMIT-14-3 | Is the callback_num_pre_ind fields supported? | |
SUBMIT-15 | Is the source_subaddress field supported? | |
SUBMIT-16 | Is the dest_subaddress field supported? | |
SUBMIT-17 | Is the user_response_code field supported? | |
SUBMIT-18 | Is the display_time field supported? | |
SUBMIT-19 | Is the sms_signal field supported? | |
SUBMIT-20 | Is the ms_validity field supported? | |
SUBMIT-21 | Is the number_of_messages field supported? | |
SUBMIT-22 | Is the alert_on_msg_delivery field supported? | |
SUBMIT-23 | Is the language_indicator field supported? | |
SUBMIT-24-1 | Is the its_reply_type field supported? | |
SUBMIT-24-2 | Is the its_session_info field supported? | |
SUBMIT-25 | Is the ussd_service_op field supported? | |
SUBMIT-26 | What is the maximum length of message_payload data supported? | |
SUBMIT-27 | Is the payload_type field supported? | |
SUBMIT-28 | Is the source_addr_subunit field supported? | |
SUBMIT-29 | Is the dest_addr_subunit field supported? | |
SUBMIT-30 | Is the ms_msg_wait_facilities field supported? |
Deliver_sm PDU
Item | Functional Unit/Description | Supported |
---|---|---|
DELIVER-1 | Is the use of different values in the service_type field allowed? | YES |
DELIVER-2 | Is the user_message_reference field supported? | YES |
DELIVER-3 | Is the source_port field supported? | YES |
DELIVER-4 | Is the destination_port field supported? | YES |
DELIVER-5-1 | Is the sar_msg_ref_num field supported? | YES |
DELIVER-5-2 | Is the sar_total_segments field supported? | YES |
DELIVER-5-3 | Is the sar_segment_seqnum fields supported? | YES |
DELIVER-6 | Is the user_response_code field supported? | |
DELIVER-7 | Is the privacy_indicator field supported? | |
DELIVER-8 | Is the message_payload field supported? | |
DELIVER-9 | Is the callback_num field supported? | |
DELIVER-10 | Is the source_subaddress field supported? | |
DELIVER-11 | Is the dest_subaddress field supported? | |
DELIVER-12 | Is the network_error_code field supported? | |
DELIVER-13 | Is the its_session_info field supported? | |
DELIVER-14 | Is the language_indicator field supported? | |
DELIVER-15 | Is the message_state field supported? | YES |
DELIVER-16 | What is the maximum length of message_payload data supported? | 64KB |
DELIVER-17 | Is the payload_type field supported? | |
DELIVER-18 | Is the receipted_message_id field supported? | YES |
Data_sm PDU (ESME to SMSC)
Item | Functional Unit/Description | Supported |
---|---|---|
ESME-DATA-1 | Is the use of different values in the service_type field allowed? | YES |
ESME-DATA-2 | Is the use of default values in the source_addr fields supported? | YES |
ESME-DATA-3 | Is the user_message_reference field supported? | YES |
ESME-DATA-4 | Is the source_port field supported? | YES |
ESME-DATA-5 | Is the destination_port field supported? | YES |
ESME-DATA-6-1 | Is the sar_msg_ref_num, field supported? | YES |
ESME-DATA-6-2 | Is the sar_total_segments field supported? | YES |
ESME-DATA-6-3 | Is the sar_segment_seqnum field supported? | YES |
ESME-DATA-7 | Is the privacy_indicator field supported? | |
ESME-DATA-8-1 | Is the callback_num fields supported? | |
ESME-DATA-8-2 | Is the callback_num_atag fields supported? | |
ESME-DATA-8-3 | Is the callback_num_pre_ind fields supported? | |
ESME-DATA-9 | Is the source_subaddress field supported? | |
ESME-DATA-10 | Is the dest_subaddress field supported? | |
ESME-DATA-11 | Is the user_response_code field supported? | |
ESME-DATA-12 | Is the display_time field supported? | |
ESME-DATA-13 | Is the sms_signal field supported? | |
ESME-DATA-14 | Is the ms_validity field supported? | |
ESME-DATA-15 | Is the number_of_messages field supported? | |
ESME-DATA-16 | Is the alert_on_msg_delivery field supported? | |
ESME-DATA-17 | Is the language_indicator field supported? | |
ESME-DATA-18-1 | Is the its_reply_type field supported? | |
ESME-DATA-18-2 | Is the its_session_info field supported? | |
ESME-DATA-19 | Is the more_msgs_to_send field supported? | |
ESME-DATA-20-1 | Is the set_dpf field supported? | |
ESME-DATA-20-2 | Is the dpf_result field supported? | |
ESME-DATA-21 | Is the message_payload field supported? | YES |
ESME-DATA-22 | What is the maximum length of message_payload data supported? | 64KB |
ESME-DATA-23 | Is the delivery_failure_reason field supported? | |
ESME-DATA-24 | Is the network_error_code field supported? | YES |
ESME-DATA-25 | Is the source_addr_subunit field supported? | |
ESME-DATA-26 | Is the dest_addr_subunit field supported? | |
ESME-DATA-27 | Is the ms_msg_wait_facilities field supported? | |
ESME-DATA-28 | Is the payload_type field supported? | |
ESME-DATA-29 | Is the additional_status_info_text field supported? | |
ESME-DATA-30 | Is the source_network_type field supported? | |
ESME-DATA-31 | Is the source_bearer_type field supported? | |
ESME-DATA-32 | Is the source_telematics_id field supported? | |
ESME-DATA-33 | Is the dest_network_type field supported? | |
ESME-DATA-34 | Is the dest_bearer_type field supported? | |
ESME-DATA-35 | Is the dest_telematics_id field supported? | |
ESME-DATA-36 | Is the message_state field supported? | YES |
ESME-DATA-37 | Is the qos_time_to_live field supported? |
Data_sm PDU (SMSC to ESME)
Item | Functional Unit/Description | Supported |
---|---|---|
SMSC-DATA-1 | Is the use of different values in the service_type field allowed? | YES |
SMSC-DATA-2 | Is the use of default values in the source_addr fields supported? | YES |
SMSC-DATA-3 | Is the user_message_reference field supported? | YES |
SMSC-DATA-4 | Is the source_port field supported? | YES |
SMSC-DATA-5 | Is the destination_port field supported? | YES |
SMSC-DATA-6-1 | Is the sar_msg_ref_num, field supported? | YES |
SMSC-DATA-6-2 | Is the sar_total_segments field supported? | YES |
SMSC-DATA-6-3 | Is the sar_segment_seqnum field supported? | YES |
SMSC-DATA-7 | Is the privacy_indicator field supported? | |
SMSC-DATA-8-1 | Is the callback_num fields supported? | |
SMSC-DATA-8-2 | Is the callback_num_atag fields supported? | |
SMSC-DATA-8-3 | Is the callback_num_pre_ind fields supported? | |
SMSC-DATA-9 | Is the source_subaddress field supported? | |
SMSC-DATA-10 | Is the dest_subaddress field supported? | |
SMSC-DATA-11 | Is the user_response_code field supported? | |
SMSC-DATA-12 | Is the display_time field supported? | |
SMSC-DATA-13 | Is the sms_signal field supported? | |
SMSC-DATA-14 | Is the ms_validity field supported? | |
SMSC-DATA-15 | Is the number_of_messages field supported? | |
SMSC-DATA-16 | Is the alert_on_msg_delivery field supported? | |
SMSC-DATA-17 | Is the language_indicator field supported? | |
SMSC-DATA-18-1 | Is the its_reply_type field supported? | |
SMSC-DATA-18-2 | Is the its_session_info field supported? | |
SMSC-DATA-19 | Is the more_msgs_to_send field supported? | |
SMSC-DATA-20-1 | Is the set_dpf field supported? | |
SMSC-DATA-20-2 | Is the dpf_result field supported? | |
SMSC-DATA-21 | Is the message_payload field supported? | YES |
SMSC-DATA-22 | What is the maximum length of message_payload data supported? | 64KB |
SMSC-DATA-23 | Is the delivery_failure_reason field supported? | |
SMSC-DATA-24 | Is the network_error_code field supported? | YES |
SMSC-DATA-25 | Is the source_addr_subunit field supported? | |
SMSC-DATA-26 | Is the dest_addr_subunit field supported? | |
SMSC-DATA-27 | Is the ms_msg_wait_facilities field supported? | |
SMSC-DATA-28 | Is the payload_type field supported? | |
SMSC-DATA-29 | Is the additional_status_info_text field supported? | |
SMSC-DATA-30 | Is the source_network_type field supported? | |
SMSC-DATA-31 | Is the source_bearer_type field supported? | |
SMSC-DATA-32 | Is the source_telematics_id field supported? | |
SMSC-DATA-33 | Is the dest_network_type field supported? | |
SMSC-DATA-34 | Is the dest_bearer_type field supported? | |
SMSC-DATA-35 | Is the dest_telematics_id field supported? | |
SMSC-DATA-36 | Is the receipted_message_id field supported? | YES |
SMSC-DATA-37 | Is the message_state field supported? | YES |
SMSC-DATA-38 | Is the qos_time_to_live field supported? |
Query_sm PDU
Item | Functional Unit/Description | Supported |
---|---|---|
QUERY-1 | Is the use of default values in the source_addr fields supported? | YES |
Cancel_sm PDU
Item | Functional Unit/Description | Supported |
---|---|---|
CANCEL-1 | Is the use of default values in the source_addr fields supported? | YES |
CANCEL-2 | Is the message_id of NULL, and thus cancelling a group of messages supported? | NO |
Replace_sm PDU
Item | Functional Unit/Description | Supported |
---|---|---|
REPLACE-1 | Is the use of default values in the source_addr fields supported? | YES |
Alert_notification PDU
Item | Functional Unit/Description | Supported |
---|---|---|
ALERT-1 | Are the source and ESME address fields always set? | |
ALERT-2 | Is the ms_availability_status field supported? |
2. Functional Items
2.1 Forward Compatibility Issues
Item | Functional Unit/Description | Supported |
---|---|---|
FORWARD-1 | If the application receives an unknown PDU does it return a generic_nack? | YES |
FORWARD-2 | Are unsupported and unrecognised optional fields ignored? | YES |
FORWARD-3 | Are all 'reserved' values in parameters interpreted as the default value ? | YES |
FORWARD-4 | Are unrecognised values in parameter value fields treated as an error ? | NO |
FORWARD-5 | Is an inconsistent Optional parameter combinations counted as an error? | NO |
FORWARD-6 | Do invalid parameter lengths cause the PDU to be rejected? | YES |
2.2 Backward Compatibility Issues
Item | Functional Unit/Description | Supported |
---|---|---|
BACK-1 | Is it possible to make this implementation only support v3.3 and not use any v3.4 or v5 features? | YES |
BACK-2 | Is it possible to make this implementation only support v3.4 and not use any v3.3 (or v5) features? | YES |
2.3 Implementation Issues
Item | Functional Unit/Description | Supported |
---|---|---|
IMP-1 | What is the maximum value for the PDU header field command_length which is supported by the implementation? | 66560 (bytes) |
IMP-2 | Are all the optional parameters processed in an order independent manner? | YES |
2.4 Overall Message Types Supported
Item | Functional Unit/Description | Supported |
---|---|---|
TYPE-1 | Are normal data messages transmitted? | YES |
TYPE-2 | Can SMSC Delivery Receipts be requested and obeyed? | YES |
TYPE-3 | Are intermediate notifications supported? | YES |
TYPE-4 | Are SME Delivery acknowledgements (Read receipts) supported? | N/A |
TYPE-5 | Are SME Manual/User acknowledgements supported? | N/A |
TYPE-6 | Are Conversational Aborts supported? | N/A |
2.5 Timers
Item | Functional Unit/Description | Supported |
---|---|---|
TIMER-1 | Is the SMPP session_init_timer implemented? | YES (20s) |
TIMER-2 | Is the SMPP enquire_link_timer implemented? | YES (60s) |
TIMER-3 | Is the SMPP inactivity_timer implemented? | YES (60s) |
TIMER-4 | Is the SMPP response_timer implemented? | YES (60s) |
2.6 SMSC Specific Questions
Item | Functional Unit/Description | Supported |
---|---|---|
SMSC-1 | Can a Store and Forward method of final delivery be used? | YES |
SMSC-2 | Can a Datagram method of final delivery be used? | YES |
SMSC-3 | Can a Transaction mode method of final delivery be used? | NO |
SMSC-4 | Can this initiate a session by using the outbind operation sequence? | NO |
SMSC-5 | What is the maximum length of message_id supported in operations? | 64 characters |
3. Implementation Issues
3.1 SMSC Specific Issues
Item | Functional Unit/Description | Supported |
---|---|---|
IMP-SMSC-1 | Is information in a bind PDU used for access control? | YES |
IMP-SMSC-2 | Can the information in the bind PDU be used for routing messages to the ESME? | YES |
IMP-SMSC-3 | In a cancel_sm received from an ESME, must the service_type field be set to the same value as the original message which is being canceled? | NO |
IMP-SMSC-4 | In a replace_sm received from an ESME, must the service_type field be set to the same value as the original message which is being replaced? | NO |
3.2 Link Usage
Item | Functional Unit/Description | Supported |
---|---|---|
LINK-1 | Is it possible to have multiple links to the same SMSC using the same access control information? | YES |
LINK-2 | Is it possible to have multiple links to the same SMSC using different access control information? | YES |
3.3 Data Fields
3.3.1 Bind Fields
Item | Functional Unit/Description | Supported |
---|---|---|
Bind-Field-1 | Are there any character or other limitations imposed upon values used in the system_id field? | NO |
Bind-Field-2 | Are there any character or other limitations imposed upon values used in the system_type field? | NO |
Bind-Field-3 | Are there any character or other limitations imposed upon values used in the password field? | NO |
3.3.2 Submit_sm Fields
Item | Functional Unit/Description | Supported |
---|---|---|
Submit-Field-1 | What, if any restrictions are imposed upon the value used in the service_type field? | NONE |
Submit-Field-2 | What values in the esme_class field are supported, and in what circumstances? | UDHI for UDH in short_message |
Submit-Field-3 | What values in the protocol_id field are supported, and in what circumstances? | Valid GSM values |
Submit-Field-4 | What values in the priority field are supported, and in what circumstances? | 0,1 |
Submit-Field-5 | What, if any restrictions are imposed upon the value used in the schedule_delivery_time field? | 90-days maximum |
Submit-Field-6 | What, if any restrictions are imposed upon the value used in the validity_period field? | 7-days maximum |
Submit-Field-7 | Which values in the registered_delivery field are supported? | 0,1 |
Submit-Field-8 | Are there any restrictions set upon the values specified in the data_coding field? | NONE |
Submit-Field-9 | How many canned messages are supported via the sm_default_allowed field? | 0 |
Submit-Field-10 | What dest_network_type and source_network_type values are supported? | N/A |
Submit-Field-11 | What dest_bearer_type, dest_telematics_id, source_bearer_type, source_telematics_id values are supported? | N/A |
Submit-Field-12 | What payload_type values are supported? | N/A |
Submit-Field-13 | What ms_msg_wait_facilities values are supported? | N/A |
Submit-Field-14 | What privacy_indicator values are supported? | N/A |
Submit-Field-15 | What language_indicator values are supported? | N/A |
3.3.3 Deliver_sm Fields
Item | Functional Unit/Description | Supported |
---|---|---|
Deliver-Field-1 | What, if any restrictions are imposed upon the value used in the service_type field? | NONE |
Deliver-Field-2 | What values in the esme_class field are supported, and in what circumstances? | Default message type, SMSC Delivery Receipt, Intermedia Delivery Receipt, UDHI |
Deliver-Field-3 | What values in the protocol_id field are supported, and in what circumstances? | Valid GSM values |
Deliver-Field-4 | What values in the priority field are supported, and in what circumstances? | NONE |
Deliver-Field-5 | Which values in the registered_delivery field are supported? | NONE |
Deliver-Field-6 | Are there any restrictions set upon the values specified in the data_coding field? | NONE |
Deliver-Field-7 | What payload_type values are supported? | N/A |
Deliver-Field-8 | What privacy_indicator values are supported? | N/A |
Deliver-Field-9 | What language_indication values are supported? | N/A |
3.3.4 Data_sm Fields
Item | Functional Unit/Description | Supported |
---|---|---|
Data-Field-1 | What, if any restrictions are imposed upon the value used in the service_type field? | NONE |
Data-Field-2 | What values in the esme_class field are supported, and in what circumstances? | IGNORED |
Data-Field-3 | Which values in the registered_delivery field are supported? | 0,1 |
Data-Field-4 | Are there any restrictions set upon the values specified in the data_coding field? | Valid GSM values |
Data-Field-5 | What dest_network_type and source_network_type values are supported? | NONE |
Data-Field-6 | What dest_bearer_type, dest_telematics_id, source_bearer_type, source_telemantics_id values are supported? | NONE |
Data-Field-7 | What ms_msg_wait_facilities values are supported? | NONE |
Data-Field-8 | What payload_type values are supported? | NONE |
Data-Field-9 | What privacy_indicator values are supported? | NONE |
Data-Field-10 | What language_indication values are supported? | NONE |
SMPP Tools and Services
Services from Melrose Labs (e.g. Tyr SMS Gateway and SMPP SMS Gateway ) support SMPP v5 and the earlier versions, v3.3 and v3.4.
SMSC Simulator
Looking to test your SMS application or SMS-enabled application before connecting to a live SMS gateway or SMSC? SMSC Simulator enables you to test using SMPP v3.3, v3.4 and v5.
Read more about SMSC Simulator >
SMPP Clients
Send and receive SMS using an SMPP account and browser-based SMPP client.
- SMPP Client * - send/receive SMS and perform other SMPP operations
- SMPP Sender * - basic send SMS client
- SMPP Multi-Sender * - send SMS to multiple numbers from a CSV or spreadsheet
- SMPP Chat * - one or more two-way conversations using SMS and SMPP
- Message Broadcast - text messaging portal for use with any SMPP-capable messaging provider
* SMPP session between web browser and provider.
SMS Code Bench
SMS messaging code sample and development playground. Collection of editable and runnable code samples in a variety of languages for different SMS interactions.
SMS Code Bench >
Send SMS programmatically with SMPP
Send SMS programmatically with SMPP using Python, Java, Go, Perl, C++, C#, Node.js, Ruby and PHP.
SMPP Load Test
Perform an SMS load test using SMPP from your web browser and view the results in realtime. SMPP Load Test tool submits SMS messages using SMPP at the specified rate. Messages are sent to one or more mobile numbers in a range from a single source address or range of source addresses.
Use the online SMPP Load Test tool >
SMPP Analyser
The SMPP Analyser acts as an SMPP proxy, with the client application binding to the service and the service onward binding to the SMSC or SMS Gateway. Packet captures can be viewed in your browser or exported into Wireshark.
Use the online SMPP Analyser >
Message Hub
Message routing between applications (uses SMPP protocol). For use in IoT, chat applications, asyncronous notification in web applications, and other applications.
Message Hub documentation >