The command_length parameter indicates the length in octets of the SMPP message. The SMPP message header (including the command_length field itself), the mandatory parameters and the optional parameters are all considered.
The command_id field identifies the type of message the SMPP PDU represents, for example, submit_sm, query_sm etc.
A command identifier is allocated to each SMPP request primitive.
A response command identifier is allocated to each response primitive.
The command_status field of an SMPP message response indicates the success or failure of an SMPP request. It is relevant only in the SMPP response message and should be set to NULL in SMPP request messages.
The SMPP Error status codes are returned by the SMSC in the command_status field of the SMPP message header and in the error_status_code field of a submit_multi_resp message.
The complete set of SMPP Error Codes and their associated values are defined in the following table.
A sequence number allows a response PDU to be correlated with a request PDU. The associated SMPP response PDU must preserve this field. The allowed sequence_number range is from 0x00000001 to 0x7FFFFFFF.
The system_id parameter is used to identify an ESME or an SMSC at bind time. An ESME system_id identifies the ESME or ESME agent to the SMSC. The SMSC system_id provides an identification of the SMSC to the ESME.
Thepassword parameter is used by the SMSC to authenticate the identity of the binding ESME. The Service Provider may require ESME's to provide a password when binding to the SMSC. This password is normally issued by the SMSC system administrator.
The password parameter may also be used by the ESME to authenticate the identity of the binding SMSC (e.g. in the case of the outbind operation).
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 SMSC's may not require ESME's to provide this detail. In this case, the ESME can set the system_type to NULL.
This parameter is used to indicate the version of the SMPP protocol. The following interface version values are defined:
These fields define the Type of Number (TON) to be used in the SME address parameters. The following TON values are defined:
These fields define the Numeric Plan Indicator (NPI) to be used in the SME address parameters. The following NPI values are defined:
The address_range parameter is used in the bind_receiver and bind_transceiver command to specify a set of SME addresses serviced by the ESME client. A single SME address may also be specified in the address_range parameter. UNIX Regular Expression notation should be used to specify a range of addresses (Refer to Appendix A.)
Messages addressed to any destination in this range shall be routed to the ESME.
Notes
For IP addresses, it is only possible to specify a single IP address. A range of IP addresses is not allowed. IP version 6.0 is not currently supported in this version of the protocol.
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.
An IP address is specified in "aaa.bbb.ccc.ddd" notation. IP version 6.0 is not supported in V3.4 of the SMPP protocol.
Specifies the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS.
Specifies the address of an ESME address to which an alert_notification should be routed.
The service_type parameter can be used to indicate the SMS Application service associated with the message. Specifying the service_type allows the ESME to:-
SMSC's may implicitly associate a "replace if present" function from the indicated service_type in a message submission operation, i.e., the SMSC will always replace an existing message pending delivery, that has the same originating and destination address as the submitted message. For example, an SMSC can ensure that a Voice Mail System using a service_type of 'VMA" has at most one outstanding notification per destination MS by automatically invoking the "replace if present" function.
The following generic service_types are defined:
All other values are carrier specific and are defined by mutual agreement between the SMSC Service Provider and the ESME application.
The esm_class parameter is used to indicate special message attributes associated with the short message.
The esm_class parameter is encoded as follows in the submit_sm, submit_multi and data_sm (ESME -> SMSC) PDUs:
x x x x x x 0 0 x x x x x x 0 1 x x x x x x 1 0 x x x x x x 1 1
Default SMSC Mode (e.g. Store and Forward) Datagram mode Forward (i.e. Transaction) mode Store and Forward mode
x x 0 0 0 0 x x x x 0 0 1 0 x x x x 0 1 0 0 x x
Default message Type (i.e. normal message) Short Message contains ESME Delivery Acknowledgement Short Message contains ESME Manual/User Acknowledgement
0 0 x x x x x x 0 1 x x x x x x 1 0 x x x x x x 1 1 x x x x x x
No specific features selected UDHI Indicator (only relevant for MT short messages) Set Reply Path (only relevant for GSM network) Set UDHI and Reply Path (only relevant for GSM network)
The esm_class parameter is encoded as follows in a deliver_sm and data_sm (SMSC -> ESME) PDUs:
x x x x x x x x
not applicable - ignore bits 0 and 1
x x 0 0 0 0 x x x x 0 0 0 1 x x x x 0 0 1 0 x x x x 0 0 1 1 x x x x 0 1 0 0 x x x x 0 1 0 1 x x x x 0 1 1 0 x x x x 0 1 1 1 x x x x 1 0 0 0 x x
Default message Type (i.e. normal message) Short Message contains SMSC Delivery Receipt Short Message contains SME Delivery Acknowledgement reserved Short Message contains SME Manual/User Acknowledgment reserved Short Message contains Conversation Abort (Korean CDMA) reserved Short Message contains Intermediate Delivery Notification all other values reserved
No specific features selected UDHI Indicator set Reply Path UDHI and Reply Path
all other values reserved
The default setting of the esm_class parameter is 0x00.
GSM
Set according to GSM 03.40 [GSM 03.40] TP-PID (Protocol identifier) either refers to the higher layer protocol being used, indicates interworking with a certain type of telematic device (like fax, telex, pager, teletex and e-mail), specifies replace type of the message or allows download of configuration parameters to the SIM card. Plain MO-MT messages have PID=0.
For TP-PID = 63 the SC converts the SM from the received TP Data Coding Scheme to any data coding scheme supported by that MS (e.g. the default).
Short Message Type 0 is known as a silent SMS. Any handset must be able to receive such short message irrespective of whether there is memory available in the (U)SIM or ME or not, must acknowledge receipt of the message, but must not indicate its receipt to the user and must discard its contents, so the message will not be stored in the (U)SIM or ME.
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.
The priority_flag parameter allows the originating SME to assign a priority level to the short message.
Four Priority Levels are supported:
These are applied in different networks as follows:-
a. For GSM mobile terminated, messages with priority greater than Level 0 are treated as priority when making a delivery attempt (i.e. a delivery attempt is made even when MWD is set in the HLR).
This parameter specifies the scheduled time at which the message delivery should be first attempted.
It defines either the absolute date and time or relative time from the current SMSC time at which delivery of this message will be attempted by the SMSC.
It can be specified in either absolute time format or relative time format. The encoding of a time format is specified in Section 7.1.1.
The validity_period parameter indicates the SMSC expiration time, after which the message should be discarded if not delivered to the destination. It can be defined in absolute time format or relative time format. The encoding of absolute and relative time format is specified in Section 7.1.1.
The registered_delivery parameter is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined:
x x x x 0 0 x x x x x x 0 1 x x x x x x 1 0 x x x x x x 1 1 x x
x x x 0 x x x x x x x 1 x x x x
The default setting of the registered_delivery parameter is 0x00.
Note:
The replace_if_present_flag parameter is used to request the SMSC to replace a previously submitted message, that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service_type match the same fields in the new message.
ESME applications that use this SMSC messaging function should use the same service_type and set the replace_if_present_flag parameter consistently to "1" for all messages, including the first message. This ensures that the SMSC has at most one message pending per destination SME for a particular application (e.g. voice mail notification).
Notes:
The sm_default_msg_id parameter specifies the SMSC index of a pre-defined ('canned') message.
The sm_length parameter specifies the length of the short_message parameter in octets. The sm_length should be set to 0 in the submit_sm, submit_multi, and deliver_sm PDUs if the message_payload parameter is being used to send user data larger than 254 octets.
The short_message parameter contains the user data. A maximum of 254 octets can be sent. ESME's should use the optional message_payload parameter in submit_sm, submit_multi, and deliver_sm to send larger user data sizes.
The unique message identifier reference assigned by the SMSC to each submitted short message. It is an opaque value and is set according to SMSC implementation. It is returned by the SMSC in the submit_sm_resp, submit_multi_resp, deliver_sm_resp and data_sm_resp PDUs and may be used by the ESME in subsequent SMPP operations relating to the short message, e.g. the ESME can use the query_sm operation to query a previously submitted message using the SMSC message_id as the message handle.
The number_of_dests parameter indicates the number of dest_address structures that are to follow in the submit_multi operation. A maximum of 254 destination address structures are allowed.
Flag which will identify whether destination address is a Distribution List (DL) name or SME address.
The number of unsuccessful SME destinations to which delivery was attempted for a submit_multi operation.
The reference name for a distribution list provisioned on the SMSC. Distribution list names are defined by mutual agreement between the SMSC and the ESME.
The following is a list of allowable states for a short message. The message_state value is returned by the SMSC to the ESME as part of the query_sm_resp PDU.
Optional Parameters are fields, which may be optionally included in an SMPP message. Optional Parameters must always appear at the end of a message, in the "Optional Parameters" section of the SMPP PDU. However, they may be included in any convenient order within the "Optional Parameters" section of the SMPP PDU and need not be encoded in the order presented in this document.
For a particular SMPP PDU, the ESME or SMSC may include some, all or none of the defined optional parameters as required for the particular application context. For example a paging system may in an SMPP submit_sm operation, include only the "callback number" related optional parameters.
All SMPP optional parameters have a 16 bit Parameter Tag Identifier. The SMPP protocol defines the following Parameter Tag blocks:
The SMPP supported Optional Parameters and their associated Tag Values are listed in Table 5-7 below. The optional parameters are described individually in the following sections.
Generic optional parameters may be applicable to all wireless network technologies i.e., GSM/ iDEN, TDMA and CDMA.
The dest_addr_subunit parameter is used to route messages when received by a mobile station, for example to a smart card in the mobile station or to an external device connected to the mobile station.
The source_addr_subunit parameter is used to indicate where a message originated in the mobile station, for example a smart card in the mobile station or an external device connected to the mobile station.
The dest_network_type parameter is used to indicate a network type associated with the destination address of a message. In the case that the receiving system (e.g. SMSC) does not support the indicated network type, it may treat this a failure and return a response PDU reporting a failure.
The source_network_type parameter is used to indicate the network type associated with the device that originated the message.
The dest_bearer_type parameter is used to request the desired bearer for delivery of the message to the destination address. In the case that the receiving system (e.g. SMSC) does not support the indicated bearer type, it may treat this a failure and return a response PDU reporting a failure.
The source_bearer_type parameter indicates the wireless bearer over which the message originated.
This parameter defines the telematic interworking to be used by the delivering system for the destination address. This is only useful when a specific dest_bearer_type parameter has also been specified as the value is bearer dependent. In the case that the receiving system (e.g. SMSC) does not support the indicated telematic interworking, it may treat this a failure and return a response PDU reporting a failure.
The source_telematics_id parameter indicates the type of telematics interface over which the message originated.
This parameter defines the number of seconds which the sender requests the SMSC to keep the message if undelivered before it is deemed expired and not worth delivering. If the parameter is not present, the SMSC may apply a default value.
The payload_type parameter defines the higher layer PDU type contained in the message payload.
0 Default. In the case of a WAP application, the default higher layer message type is a WDP message. See [WDP] for details.
1 WCMP message. Wireless Control Message Protocol formatted data. See [WCMP] for details.
values 2 to 255 are reserved
The additional_status_info_text parameter gives an ASCII textual description of the meaning of a response PDU. It is to be used by an implementation to allow easy diagnosis of problems.
The receipted_message_id parameter indicates the ID of the message being receipted in an SMSC Delivery Receipt. This is the opaque SMSC message identifier that was returned in the message_id parameter of the SMPP response PDU that acknowledged the submission of the original message.
The ms_msg_wait_facilities parameter allows an indication to be provided to an MS that there are messages waiting for the subscriber on systems on the PLMN. The indication can be an icon on the MS screen or other MMI indication.
The ms_msg_wait_facilities can also specify the type of message associated with the message waiting indication.
Bits 7............0 I00000TT
This parameter controls the indication and specifies the message type (of the message associated with the MWI) at the mobile station.
The Indicator is encoded in bit 7 as follows:
The Type of Message associated with the MWI is encoded in bits 0 and 1 as follows:
The privacy_indicator indicates the privacy level of the message.
The source_subaddress parameter specifies a subaddress associated with the originator of the message.
The first octet of the data field is a Type of Subaddress tag and indicates the type of subaddressing information included, and implies the type and length of subaddressing information which can accompany this tag value in the data field.
Valid Tag values are:
00000001 - Reserved 00000010 - Reserved 10000000 - NSAP (Even) [ITUT X.213] 10001000 - NSAP (Odd) [ITUT X.213] 10100000 - User Specified All other values Reserved
The remaining octets contain the subaddress.
Using the SMPP TLV parameters source_subaddress (0x202) and dest_subaddress (0x203) for encoding routing information for the MCC (mobile country code) and MNC (mobile network code) of the source (sender) and destination (recipient) addresses. It is necessary to use the HexString encoding format for this parameter, because the SMPP specification defines first byte of the value as being a binary code value for the type of subaddress. In the case of the GSM Association values, this first byte is always A0 (hex), indicating user specified. The next 3 bytes are the MCC, followed by 3 bytes for the MNC. ASCII character values are used for the MCC and MNC, and then converted to a hex string. The IR.75 document provides an example using the MCC and MNC for AT&T USA, where MCC=310 and MNC=380. Converting the MCC value from ASCII to its hex string encoding would produce the following sequence of bytes: 33 31 30, and MNC would result in the following: 33 38 30. The resulting parameter value in hex string format would be A0333130333830.
A User Specified subaddress is encoded according to user specification, subject to a maximum of 22 octets.
The dest_subaddress parameter specifies a subaddress associated with the destination of the message.
Note: The dest_subaddress parameter is not supported in the SMPP submit_multi PDU.
A reference assigned by the originating SME to the short message.
A response code set by the user in a User Acknowledgement/Reply message. The response codes are application specific.
The language_indicator parameter is used to indicate the language of the short message.
The source_port parameter is used to indicate the application port number associated with the source address of the message.
The destination_port parameter is used to indicate the application port number associated with the destination address of the message.
The sar_msg_ref_num parameter is used to indicate the reference number for a particular concatenated short message.
The sar_total_segments parameter is used to indicate the total number of short messages within the concatenated short message.
The sar_segment_seqnum parameter is used to indicate the sequence number of a particular short message within the concatenated short message.
The sc_interface_version parameter is used to indicate the SMPP version supported by the SMSC. It is returned in the bind response PDUs.
The display_time parameter is used to associate a display time of the short message on the MS.
The ms_validity parameter is used to provide an MS with validity information associated with the received short message.
The dpf_result parameter is used in the data_sm_resp PDU to indicate if delivery pending flag (DPF) was set for a delivery failure of the short message..
If the dpf_result parameter is not included in the data_sm_resp PDU, the ESME should assume that DPF is not set.
Currently this parameter is only applicable for the Transaction message mode.
An ESME may use the set_dpf parameter to request the setting of a delivery pending flag (DPF) for certain delivery failure scenarios, such as
The SMSC should respond to such a request with an alert_notification PDU when it detects that the destination MS has become available.
The delivery failure scenarios under which DPF is set is SMSC implementation and network implementation specific. If a delivery pending flag is set by the SMSC or network (e.g. HLR), then the SMSC should indicate this to the ESME in the data_sm_resp message via the dpf_result parameter.
The ms_availability_status parameter is used in the alert_notification operation to indicate the availability state of the MS to the ESME.
If the SMSC does not include the parameter in the alert_notification operation, the ESME should assume that the MS is in an "available" state.
The network_error_code parameter is used to indicate the actual network error code for a delivery failure. The network error code is technology specific.
The first octet indicates the network type. The following values are defined:
The remaining two octets specify the actual network error code appropriate to the network type.
The message_payload parameter contains the user data.
The delivery_failure_reason parameter is used in the data_sm_resp operation to indicate the outcome of the message delivery attempt (only applicable for transaction message mode). If a delivery failure due to a network error is indicated, the ESME may check the network_error_code parameter (if present) for the actual network error code.
The delivery_failure_reason parameter is not included if the delivery attempt was successful.
The more_messages_to_send parameter is used by the ESME in the submit_sm and data_sm operations to indicate to the SMSC that there are further messages for the same destination SME. The SMSC may use this setting for network resource optimization.
The message_state optional parameter is used by the SMSC in the deliver_sm and data_sm PDUs to indicate to the ESME the final message state for an SMSC Delivery Receipt.
The callback_num parameter associates a call back number with the message. In TDMA networks, it is possible to send and receive multiple callback numbers to/from TDMA mobile stations.
Bits 7.............0
0000000D (octet 1)
00000TTT (octet 2)
0000NNNN (octet 3)
XXXXXXXX (octet 4)
:
XXXXXXXX (octet N)
The originating SME can set a Call Back Number for the receiving Mobile Station. The first octet contains the Digit Mode Indicator. Bit D=0 indicates that the Call Back Number is sent to the mobile as DTMF digits encoded in TBCD. Bit D=1 indicates that the Call Back Number is sent to the mobile encoded as ASCII digits. The 2nd octet contains the Type of Number (TON). Encoded as in section 1.2.5.
The third octet contains the Numbering Plan Indicator (NPI). Encoded as specified in section 1.2.6
The remaining octets contain the Call Back Number digits encoded as ASCII characters
Bits 7............0 0000ppss
This parameter controls the presentation indication and screening of the CallBackNumber at the mobile station.If present, the callback_num parameter must also be present.
The Presentation Indicator is encoded in bits 2 and 3 as follows:
00 = Presentation Allowed
01 = Presentation Restricted
10 = Number Not Available
11 = Reserved
The Screening Indicator is encoded in bits 0 and 1 as follows:
00 = User provided, not screened
01 = User provided, verified and passed
10 = User provided, verified and failed
11 = Network Provided.
The callback_num_atag parameter associates an alphanumeric display with the call back number.
Alphanumeric display tag for call back number
Bits 7...............0 EEEEEEEE (octet 1) XXXXXXXX (octet 2) : : XXXXXXXX (octet N)
The first octet contains the encoding scheme of the Alpha Tag display characters. This field contains the same values as for Data Coding Scheme (see section 1.2.19). The following octets contain the display characters: There is one octet per display character for 7-bit and 8-bit encoding schemes. There are two octets per display character for 16-bit encoding schemes.
The number_of_messages parameter is used to indicate the number of messages stored in a mailbox.
The sms_signal parameter is used to provide a TDMA MS with alert tone information associated with the received short message.
The alert_on_message_delivery parameter is set to instruct a MS to alert the user (in a MS implementation specific manner) when the short message arrives at the MS.
The its_reply_type parameter is a required parameter for the CDMA Interactive Teleservice as defined by the Korean PCS carriers [KORITS]. It indicates and controls the MS user's reply method to an SMS delivery message received from the ESME.
0 = Digit 1 = Number 2 = Telephone No. 3 = Password 4 = Character Line 5 = Menu 6 = Date 7 = Time 8 = Continue values 9 to 255 are reserved
The its_session_info parameter is a required parameter for the CDMA Interactive Teleservice as defined by the Korean PCS carriers [KORITS]. It contains control information for the interactive session between an MS and an ESME.
Bits 7...............0 SSSS SSSS (octet 1) NNNN NNNE (octet 2)
Octet 1 contains the session number (0 - 255) encoded in binary. The session number remains constant for each session.
The sequence number of the dialogue unit (as assigned by the ESME) within the session is encoded in bits 7..1 of octet 2.
The End of Session Indicator indicates the message is the end of the conversation session and is encoded in bit 0 of octet 2 as follows: 0 = End of Session Indicator inactive. 1 = End of Session Indicator active.
The ussd_service_op parameter is required to define the USSD service operation when SMPP is being used as an interface to a (GSM) USSD system.
0 = PSSD indication 1 = PSSR indication 2 = USSR request 3 = USSN request 4 to 15 = reserved 16 = PSSD response 17 = PSSR response 18 = USSR confirm 19 = USSN confirm 20 to 31 = reserved 32 to 255 = reserved for vendor specific USSD operations