Sysop.Fr
Catégories

apache

awk

bash

charmap

date

echo

encoding

find

grep

hexdump

irc

iso3166

ls

mysql

od

openssh

printf

python

read

sed

seq

smpp

sort/uniq

tar

tr

ucp

Articles

SMPP (Short Message Peer to Peer)

SMPP decoder



1. SMPP Parameter Definition

1.1 Command Header Parameters

1.1.1 command_length

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.

1.1.2 command_id

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.

Command IDValue
generic_nack0x80000000
bind_receiver0x00000001
bind_receiver_resp0x80000001
bind_transmitter0x00000002
bind_transmitter_resp0x80000002
query_sm0x00000003
query_sm_resp0x80000003
submit_sm0x00000004
submit_sm_resp0x80000004
deliver_sm0x00000005
deliver_sm_resp0x80000005
unbind0x00000006
unbind_resp0x80000006
replace_sm0x00000007
replace_sm_resp0x80000007
cancel_sm0x00000008
cancel_sm_resp0x80000008
bind_transceiver0x00000009
bind_transceiver_resp0x80000009
enquire_link0x00000015
enquire_link_resp0x80000015

1.1.3 command_status

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.

Error CodeValueDescription
ESME_ROK0x00000000No Error
ESME_RINVMSGLEN0x00000001Message Length is invalid
ESME_RINVCMDLEN0x00000002Command Length is invalid
ESME_RINVCMDID0x00000003Invalid Command ID
ESME_RINVBNDSTS0x00000004Incorrect BIND Status for given command
ESME_RALYBND0x00000005ESME Already in Bound State
ESME_RINVPRTFLG0x00000006Invalid Priority Flag
ESME_RINVREGDLVFLG0x00000007Invalid Registered Delivery Flag
ESME_RSYSERR0x00000008System Error
Reserved0x00000009Reserved
ESME_RINVSRCADR0x0000000AInvalid Source Address
ESME_RINVDSTADR0x0000000BInvalid Dest Addr
ESME_RINVMSGID0x0000000CMessage ID is invalid
ESME_RBINDFAIL0x0000000DBind Failed
ESME_RINVPASWD0x0000000EInvalid Password
ESME_RINVSYSID0x0000000FInvalid System ID
Reserved0x00000010Reserved
ESME_RCANCELFAIL0x00000011Cancel SM Failed
Reserved0x00000012Reserved
ESME_RREPLACEFAIL0x00000013Replace SM Failed
ESME_RMSGQFUL0x00000014Message Queue Full
ESME_RINVSERTYP0x00000015Invalid Service Type
Reserved0x00000016-0x00000032Reserved
ESME_RINVNUMDESTS0x00000033Invalid number of destinations
ESME_RINVDLNAME0x00000034Invalid Distribution List name
Reserved0x00000035-0x0000003FReserved
ESME_RINVDESTFLAG0x00000040Destination flag is invalid (submit_multi)
Reserved0x00000041Reserved
ESME_RINVSUBREP0x00000042Invalid ‘submit with replace’ request (i.e. submit_sm with replace_if_present_flag set)
ESME_RINVESMCLASS0x00000043Invalid esm_class field data
ESME_RCNTSUBDL0x00000044Cannot Submit to Distribution List
ESME_RSUBMITFAIL0x00000045submit_sm or submit_multi failed
Reserved0x00000046-0x00000047Reserved
ESME_RINVSRCTON0x00000048Invalid Source address TON
ESME_RINVSRCNPI0x00000049Invalid Source address NPI
ESME_RINVDSTTON0x00000050Invalid Destination address TON
ESME_RINVDSTNPI0x00000051Invalid Destination address NPI
Reserved0x00000052Reserved
ESME_RINVSYSTYP0x00000053Invalid system_type field
ESME_RINVREPFLAG0x00000054Invalid replace_if_present flag
ESME_RINVNUMMSGS0x00000055Invalid number of messages
Reserved0x00000056-0x00000057Reserved
ESME_RTHROTTLED0x00000058Throttling error (ESME has exceeded allowed message limits)
Reserved0x00000059-0x00000060Reserved
ESME_RINVSCHED0x00000061Invalid Scheduled Delivery Time
ESME_RINVEXPIRY0x00000062Invalid message validity period (Expiry time)
ESME_RINVDFTMSGID0x00000063Predefined Message Invalid or Not Found
ESME_RX_T_APPN0x00000064ESME Receiver Temporary App Error Code
ESME_RX_P_APPN0x00000065ESME Receiver Permanent App Error Code
ESME_RX_R_APPN0x00000066ESME Receiver Reject Message Error Code
ESME_RQUERYFAIL0x00000067query_sm request failed
Reserved0x00000068-0x000000BFReserved
ESME_RINVOPTPARSTREAM0x000000C0Error in the optional part of the PDU Body.
ESME_ROPTPARNOTALLWD0x000000C1Optional Parameter not allowed
ESME_RINVPARLEN0x000000C2Invalid Parameter Length.
ESME_RMISSINGOPTPARAM0x000000C3Expected Optional Parameter missing
ESME_RINVOPTPARAMVAL0x000000C4Invalid Optional Parameter Value
Reserved0x000000C5-0x000000FDReserved
ESME_RDELIVERYFAILURE0x000000FEDelivery Failure (used for data_sm_resp)
ESME_RUNKNOWNERR0x000000FFUnknown Error
Reserved for SMPP extension0x00000100-0x000003FFReserved for SMPP extension
Reserved for SMSC vendor specific errors0x00000400-0x000004FFReserved for SMSC vendor specific errors
Reserved0x00000500-0xFFFFFFFFReserved

1.1.4 sequence_number

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.

1.2 Mandatory SMPP Parameters

1.2.1 system_id

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.

1.2.2 password

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).

1.2.3 system_type

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.

1.2.4 interface_version

This parameter is used to indicate the version of the SMPP protocol. The following interface version values are defined:

Interface Version Value
Indicates that the EMSE supports version 3.3 or earlier of the SMPP protocol. 0x00-0x33
Indicates that the ESME is supporting SMPP version 3.4 0x34
All other values reserved  

1.2.5 addr_ton, source_addr_ton, dest_addr_ton, esme_addr_ton

These fields define the Type of Number (TON) to be used in the SME address parameters. The following TON values are defined:

TONValue
Unknown 00000000
International 00000001
National 00000010
Network Specific 00000011
Subscriber Number 00000100
Alphanumeric 00000101
Abbreviated 00000110
All other values reserved

1.2.6 addr_npi, source_addr_npi, dest_addr_npi, esme_addr_npi

These fields define the Numeric Plan Indicator (NPI) to be used in the SME address parameters. The following NPI values are defined:

NPIValue
Unknown 00000000
ISDN (E163/E164) 00000001
Data (X.121) 00000011
Telex (F.69) 00000100
Land Mobile (E.212) 00000110
National 00001000
Private 00001001
ERMES 00001010
Internet (IP) 00001110
WAP Client Id (to be defined by WAP Forum) 00010010
All other values reserved

1.2.7 address_range

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.

1.2.8 source_addr

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.

Notes

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.

1.2.9 destination_addr

Specifies the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS.

Notes

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.

1.2.10 esme_addr

Specifies the address of an ESME address to which an alert_notification should be routed.

Notes

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.

1.2.11 service_type

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:

"" (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

All other values are carrier specific and are defined by mutual agreement between the SMSC Service Provider and the ESME application.

1.2.12 esm_class

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:

Bits7 6 5 4 3 2 1 0Meaning
   
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
Messaging Mode (bits 1-0)
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
Message Type (bits 5-2)
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
GSM Network Specific Features (bits 7-6)
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:

Bits7 6 5 4 3 2 1 0Meaning
   
x x x x x x x x
Message Mode (bits 1-0)
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
 
Message Type (bits 5-2)
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
   
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
GSM Network Specific Features (bits 7-6)
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.

Notes

1.2.13 protocol_id TP-PID (Protocol identifier)

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.

TP-PID (decimal)meaning
0Default store and forward short message
1–31no telematic interworking, but SME to SME protocol
32implicit telemetic device
33Telex or teletex reduced to telex format
34Group 3 telefax
35Group 4 telefax
36Voice telephone
37ERMES (European Radio Messaging System)
38National Paging system (known to the SC)
39Videotex (T.100 [20] /T.101 [21])
40Teletex, carrier unspecified
41Teletex, in PSPDN
42Teletex, in CSPDN
43Teletex, in analog PSTN
44Teletex, in digital ISDN
45UCI (Universal Computer Interface, ETSI DE/PS 3 01 3)
46–47Reserved
48A message handling facility (known to the SC)
49Any public X.400 based message handling system
50Internet Electronic Mail
51–55Reserved
56–62SC-specific; usage based on mutual agreement between the SME and the SC
63A GSM/UMTS mobile station.
64Short Message Type 0
65Replace Short Message Type 1
66Replace Short Message Type 2
67Replace Short Message Type 3
68Replace Short Message Type 4
69Replace Short Message Type 5
70Replace Short Message Type 6
71Replace Short Message Type 7
72Device Triggering Short Message
73–93Reserved
94Enhanced Message Service (Obsolete)
95Return Call Message
96–123Reserved
124ANSI-136 R-DATA
125ME Data download
126ME De personalization Short Message
127(U)SIM Data download
128–191reserved
192–255Assigns bits 0 5 for SC specific use
All other values reserved

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.

1.2.14 priority_flag

The priority_flag parameter allows the originating SME to assign a priority level to the short message.

Four Priority Levels are supported:

0 = Level 0 (lowest) priority 1 = Level 1 priority 2 = Level 2 priority 3 = Level 3 (highest) priority >3=Reserved

These are applied in different networks as follows:-

Priority LevelGSMaANSI-136IS-95
0non-priority Bulk Normal
1priority Normal Interactive
2priorityv Urgent Urgent
3priority Very UrgentEmergency
All other values reserved
Table 5-5: SMPP Message Priority values

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).

1.2.15 schedule_delivery_time

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.

1.2.16 validity_period

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.

1.2.17 registered_delivery

The registered_delivery parameter is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined:

Bits7 6 5 4 3 2 1 0Meaning
 
            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
            
SMSC Delivery Receipt (bits 1 and 0) No SMSC Delivery Receipt requested (default) SMSC Delivery Receipt requested where final delivery outcome is delivery success or failure SMSC Delivery Receipt requested where the final delivery outcome is delivery failure reserved
 
            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
            
SME originated Acknowledgement (bits 3 and 2) No recipient SME acknowledgment requested (default) SME Delivery Acknowledgement requested SME Manual/User Acknowledgment requested Both Delivery and Manual/User Acknowledgment requested
 
            x x x 0 x x x x
            x x x 1 x x x x
            
Intermediate Notification (bit 5) No Intermediate notification requested (default) Intermediate notification requested **

all other values reserved

The default setting of the registered_delivery parameter is 0x00.

Note:

1.2.18 replace_if_present_flag

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.

0 Don't replace (default)
1 Replace
2 - 255reserved

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).

1.2.19 data_coding

Bits 7 6 5 4 3 2 1 0 Meaning Notes
 0 0 0 0 0 0 0 0SMSC Default Alphabet  
 0 0 0 0 0 0 0 1IA5 (CCITT T.50)/ASCII (ANSI X3.4) b
 0 0 0 0 0 0 1 0Octet unspecified (8-bit binary) b
 0 0 0 0 0 0 1 1Latin 1 (ISO-8859-1) b
 0 0 0 0 0 1 0 0Octet unspecified (8-bit binary) a
 0 0 0 0 0 1 0 1JIS (X 0208-1990) b
 0 0 0 0 0 1 1 0Cyrllic (ISO-8859-5) b
 0 0 0 0 0 1 1 1Latin/Hebrew (ISO-8859-8) b
 0 0 0 0 1 0 0 0UCS2 (ISO/IEC-10646) a
 0 0 0 0 1 0 0 1Pictogram Encoding b
 0 0 0 0 1 0 1 0ISO-2022-JP (Music Codes) b
 0 0 0 0 1 0 1 1reserved  
 0 0 0 0 1 1 0 0reserved  
 0 0 0 0 1 1 0 1Extended Kanji JIS(X 0212-1990) b
 0 0 0 0 1 1 1 0KS C 5601 b
 0 0 0 0 1 1 1 1reserved :
 1 0 1 1 1 1 1 1reserved  
 1 1 0 0 x x x xGSM MWI control - see [GSM 03.38] d
 1 1 0 1 x x x xGSM MWI control - see [GSM 03.38] d
 1 1 1 0 x x x xreserved  
 1 1 1 1 x x x xGSM message class control - see [GSM 03.38]e

Notes:

1.2.20 sm_default_msg_id

The sm_default_msg_id parameter specifies the SMSC index of a pre-defined ('canned') message.

0 reserved
1 - 254 Allowed values
255 Reserved

1.2.21 sm_length

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.

0 no user data in short message field
1-254 allowed
255 not allowed

1.2.22 short_message

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.

1.2.23 message_id

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.

1.2.24 number_of_dests

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.

1.2.25 dest_flag

Flag which will identify whether destination address is a Distribution List (DL) name or SME address.

1.2.26 no_unsuccess

The number of unsuccessful SME destinations to which delivery was attempted for a submit_multi operation.

1.2.27 dl_name

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.

1.2.28 message_state

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.

Message StateValueDescription
ENROUTE 1The message is in enroute state.
DELIVERED 2Message is delivered to destination
EXPIRED 3Message validity period has expired.
DELETED 4Message has been deleted.
UNDELIVERABLE5Message is undeliverable
ACCEPTED 6Message is in accepted state (i.e. has been manually read on behalf of the subscriber by customer service)
UNKNOWN 7Message is in invalid state
REJECTED 8Message is in a rejected state
Table 5-6: Message States

1.3 SMPP Optional Parameter Description

1.3.1 Optional Parameter Tag Identifiers

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:

0x0000 Reserved
0x0001 - 0x00FFSMPP defined optional parameters
0x0100 - 0x01FFReserved
0x0200 - 0x05FFSMPP defined optional parameters
0x0600 - 0x10FFReserved for SMPP Protocol Extension
0x1100 - 0x11FFReserved
0x1200 - 0x13FFSMPP defined optional parameters
0x1400 - 0x3FFFReserved for SMSC Vendor specific optional parameters
0x4000 - 0xFFFFReserved

1.3.2 SMPP Optional Parameter Tag definitions

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.

TagValueWireless Network Technology
dest_addr_subunit 0x0005GSM
dest_network_type 0x0006Generic
dest_bearer_type 0x0007Generic
dest_telematics_id 0x0008GSM
source_addr_subunit 0x000DGSM
source_network_type 0x000EGeneric
source_bearer_type 0x000FGeneric
source_telematics_id 0x0010GSM
qos_time_to_live 0x0017Generic
payload_type 0x0019Generic
additional_status_info_text 0x001DGeneric
receipted_message_id 0x001EGeneric
ms_msg_wait_facilities 0x0030GSM
privacy_indicator 0x0201CDMA, TDMA
source_subaddress 0x0202CDMA, TDMA
dest_subaddress 0x0203CDMA, TDMA
user_message_reference 0x0204Generic
user_response_code 0x0205CDMA, TDMA
source_port 0x020AGeneric
destination_port 0x020BGeneric
sar_msg_ref_num 0x020CGeneric
language_indicator 0x020DCDMA, TDMA
sar_total_segments 0x020EGeneric
sar_segment_seqnum 0x020FGeneric
SC_interface_version 0x0210Generic
callback_num_pres_ind 0x0302TDMA
callback_num_atag 0x0303TDMA
number_of_messages 0x0304CDMA
callback_num 0x0381CDMA, TDMA, GSM, iDEN
dpf_result 0x0420Generic
set_dpf 0x0421Generic
ms_availability_status 0x0422Generic
network_error_code 0x0423Generic
message_payload 0x0424Generic
delivery_failure_reason 0x0425Generic
more_messages_to_send 0x0426GSM
message_state 0x0427Generic
ussd_service_op 0x0501GSM (USSD)
display_time 0x1201CDMA, TDMA
sms_signal 0x1203TDMA
ms_validity 0x1204CDMA, TDMA
alert_on_message_delivery 0x130CCDMA
its_reply_type 0x1380CDMA
its_session_info 0x1383CDMA
Table 5-7: Optional Parameter Tag values

1.3.2.1 dest_addr_subunit

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer dest_addr_subunit
Length 2 Integer Length of Value part in octets
Value 1 Integer 0x00 = Unknown (default)
0x01 = MS Display
0x02 = Mobile Equipment
0x03 = Smart Card 1 (expected to be SIM if
a SIM exists in the MS)
0x04 = External Unit 1
5 to 255 = reserved

1.3.2.2 source_addr_subunit

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer source_addr_subunit
Length 2 Integer Length of Value part in octets
Value 1 Integer see 1.3.2.1

1.3.2.3 dest_network_type

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer dest_network_type
Length 2 Integer Length of Value part in octets
Value 1 Integer 0x00 = Unknown
0x01 = GSM
0x02 = ANSI-136/TDMA
0x03 = IS-95/CDMA
0x04 = PDC
0x05 = PHS
0x06 = iDEN
0x07 = AMPS
0x08 = Paging Network
9 to 255 = reserved

1.3.2.4 source_network_type

The source_network_type parameter is used to indicate the network type associated with the device that originated the message.

Field Name Size octets Type Description
Parameter Tag 2 Integer source_network_type
Length 2 Integer Length of Value part in octets
Value 1 Integer see 1.3.2.3

1.3.2.5 dest_bearer_type

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer dest_bearer_type
Length 2 Integer Length of Value part in octets
Value 1 Integer 0x00 = Unknown 0x01 = SMS 0x02 = Circuit Switched Data (CSD) 0x03 = Packet Data 0x04 = USSD 0x05 = CDPD 0x06 = DataTAC 0x07 = FLEX/ReFLEX 0x08 = Cell Broadcast (cellcast) 9 to 255 = reserved

1.3.2.6 source_bearer_type

The source_bearer_type parameter indicates the wireless bearer over which the message originated.

Field Name Size octets Type Description
Parameter Tag 2 Integer source_bearer_type
Length 2 Integer Length of Value part in octets
Value 1 Integer see 1.3.2.5

1.3.2.7 dest_telematics_id

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer dest_telematics_id
Length 2 Integer Length of Value part in octets
Value 2 Integer to be defined

1.3.2.8 source_telematics_id

The source_telematics_id parameter indicates the type of telematics interface over which the message originated.

Field Name Size octets Type Description
Parameter Tag 2 Integer source_telematics_id
Length 2 Integer Length of Value part in octets
Value 1 Integer see 1.3.2.7

1.3.2.9 qos_time_to_live

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer qos_time_to_live
Length 2 Integer Length of Value part in octets
Value 4 Integer number of seconds for message to be retained by the receiving system.

1.3.2.10 payload_type

The payload_type parameter defines the higher layer PDU type contained in the message payload.

Field Name Size octets Type Description
Parameter Tag 2 Integer payload_type
Length 2 Integer Length of Value part in octets
Value 1 Integer

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

1.3.2.11 additional_status_info_text

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer additional_status_info_text
Length 2 Integer Length of Value part in octets
Value 1 - 256 C Octet StringFree format text to allow implementations to supply the most useful information for problem diagnosis. Maximum length is 256 octets.

1.3.2.12 receipted_message_id

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer receipted_message_id
Length 2 Integer Length of Value part in octets
Value 1 - 65 C Octet StringSMSC handle of the message being receipted.

1.3.2.13 ms_msg_wait_facilities

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer ms_msg_wait_facilities
Length 2 Integer Length of Value part in octets
Value 1 Bit mask

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:

  • 0 = Set Indication Inactive
  • 1 = Set Indication Active

The Type of Message associated with the MWI is encoded in bits 0 and 1 as follows:

  • 00 = Voicemail Message Waiting
  • 01 = Fax Message Waiting
  • 10 = Electronic Mail Message Waiting
  • 11 = Other Message Waiting

1.3.2.14 privacy_indicator

The privacy_indicator indicates the privacy level of the message.

Field Name Size octets Type Description
Parameter Tag 2 Integer privacy_indicator
Length 2 Integer Length of value part in octets
Value 1 Integer 0 = Privacy Level 0 (Not Restricted)
(default)
1 = Privacy Level 1 (Restricted)
2 = Privacy Level 2 (Confidential)
3 = Privacy Level 3 (Secret)
values 4 to 255 are reserved
Table 5-8: Privacy Indicator values

1.3.2.15 source_subaddress

The source_subaddress parameter specifies a subaddress associated with the originator of the message.

Field Name Size octets Type Description
Parameter Tag 2 Integer  
Length 2 Integer Length of Value part in octets
Value Var 2 - 23Octet String

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.

1.3.2.16 dest_subaddress

The dest_subaddress parameter specifies a subaddress associated with the destination of the message.

Field Name Size octets Type Description
Parameter Tag 2 Integer dest_subaddress
Length 2 Integer Length of Value part in octets
Value Var 2 - 23Octet String See 1.3.2.15 for parameter encoding.

Note: The dest_subaddress parameter is not supported in the SMPP submit_multi PDU.

1.3.2.17 user_message_reference

A reference assigned by the originating SME to the short message.

Field Name Size octets Type Description
Parameter Tag 2 Integer user_message_reference
Length 2 Integer Length of value part in octets
Value 2 Integer All values allowed.

1.3.2.18 user_response_code

A response code set by the user in a User Acknowledgement/Reply message. The response codes are application specific.

Field Name Size octets Type Description
Parameter Tag 2 Integer user_response_code
Length 2 Integer Length of value part in octets
Value 1 Integer 0 to 255 (IS-95 CDMA) 0 to 15 (CMT-136 TDMA)

1.3.2.19 language_indicator

The language_indicator parameter is used to indicate the language of the short message.

Field Name Size octets Type Description
Parameter Tag 2 Integer language_indicator
Length 2 Integer Length of value part in octets
Value 1 Integer 0 = unspecified (default)
1 = english
2 = french
3 = spanish
4 = german
5 = Portuguese
refer to [CMT-136] for other values

1.3.2.20 source_port

The source_port parameter is used to indicate the application port number associated with the source address of the message.

Field Name Size octets Type Description
Parameter Tag 2 Integer source_port
Length 2 Integer Length of value part in octets
Value 2 Integer All values allowed.

1.3.2.21 destination_port

The destination_port parameter is used to indicate the application port number associated with the destination address of the message.

Field Name Size octets Type Description
Parameter Tag 2 Integer destination_port
Length 2 Integer Length of value part in octets
Value 2 Integer All values allowed.

1.3.2.22 sar_msg_ref_num

The sar_msg_ref_num parameter is used to indicate the reference number for a particular concatenated short message.

Field Name Size octets Type Description
Parameter Tag 2 Integer sar_msg_ref_num
Length 2 Integer Length of value part in octets
Value 2 Integer This parameter shall contain a originator generated reference number so that a segmented short message may be reassembled into a single original message. This allows the parallel transmission of several segmented messages. This reference number shall remain constant for every segment which makes up a particular concatenated short message. When present, the PDU must also contain the sar_total_segments and sar_segment_seqnum parameters. Otherwise this parameter shall be ignored.

1.3.2.23 sar_total_segments

The sar_total_segments parameter is used to indicate the total number of short messages within the concatenated short message.

Field Name Size octets Type Description
Parameter Tag 2 Integer sar_total_segments
Length 2 Integer Length of value part in octets
Value 1 Integer This parameter shall contain a value in the range 1 to 255 indicating the total number of fragments within the concatenated short message. The value shall start at 1 and remain constant for every short message which makes up the concatenated short message. When present, the PDU must also contain the sar_msg_ref_num and sar_segment_seqnum parameters. Otherwise this parameter shall be ignored.

1.3.2.24 sar_segment_seqnum

The sar_segment_seqnum parameter is used to indicate the sequence number of a particular short message within the concatenated short message.

Field Name Size octets Type Description
Parameter Tag 2 Integer ar_segment_seqnum
Length 2 Integer Length of value part in octets
Value 1 Integer This octet shall contain a value in the range 1 to 255 indicating the sequence number of a particular message within the concatenated short message. The value shall start at 1 and increment by one for every message sent within the concatenated short message. When present, the PDU must also contain the sar_total_segments and sar_msg_ref_num parameters. Otherwise this parameter shall be ignored.

1.3.2.25 sc_interface_version

The sc_interface_version parameter is used to indicate the SMPP version supported by the SMSC. It is returned in the bind response PDUs.

Field Name Size octets Type Description
Parameter Tag 2 Integer sc_interface_version
Length 2 Integer Length of value part in octets
Value 1 Integer values as per 1.2.4. (interface_version)

1.3.2.26 display_time

The display_time parameter is used to associate a display time of the short message on the MS.

Field Name Size octets Type Description
Parameter Tag 2 Integer display_time
Length 2 Integer Length of value part in octets
Value 1 Integer 0 = Temporary
1 = Default (default)
2 = Invoke
values 3 to 255 are reserved

1.3.2.27 ms_validity

The ms_validity parameter is used to provide an MS with validity information associated with the received short message.

Field Name Size octets Type Description
Parameter Tag 2 Integer ms_validity
Length 2 Integer Length of value part in octets
Value 1 Integer 0 = Store Indefinitely (default)
1 = Power Down
2 = SID based registration area
3 = Display Only
values 4 to 255 are reserved

1.3.2.28 dpf_result

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer dpf_result
Length 2 Integer Length of value part in octets
Value 1 Integer 0 = DPF not set
1 = DPF set
values 2 to 255 are reserved

1.3.2.29 set_dpf

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer set_dpf
Length 2 Integer length of value part in octets
Value 1 Integer 0 = Setting of DPF for delivery failure to MS not requested
1 = Setting of DPF for delivery failure requested (default)
values 2 to 255 are reserved

1.3.2.30 ms_availability_status

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer ms_availability_status
Length 2 Integer Length of value part in octets
Value 1 Integer 0 = Available (Default)
1 = Denied (e.g. suspended, no SMS capability, etc.)
2 = Unavailable values 3 to 255 are reserved

1.3.2.31 network_error_code

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer network_error_code
Length 2 Integer Length of value part in octets
Value 3 Octet String
Sub-field SizeType
Network Type1 Integer
Error Code 2 Integer

The first octet indicates the network type. The following values are defined:

  • 1 = ANSI-136
  • 2 = IS-95
  • 3 = GSM
  • 4 = Reserved
  • All other values reserved.

The remaining two octets specify the actual network error code appropriate to the network type.

1.3.2.32 message_payload

The message_payload parameter contains the user data.

Field Name Size octets Type Description
Parameter Tag 2 Integer message_payload
Length 2 Integer Set to length of user data
Value Variable Octet String Short message user data. The maximum size is SMSC and network implementation specific.

1.3.2.33 delivery_failure_reason

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer delivery_failure_reason
Length 2 Integer Length of value part in octets
Value 1 Integer 0 = Destination unavailable
1 = Destination Address Invalid (e.g.
suspended, no SMS capability, etc.)
2 = Permanent network error
3 = Temporary network error
values 4 to are 255 reserved

1.3.2.34 more_messages_to_send

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer more_messages_to_send
Length 2 Integer Length of value part in octets
Value 1   0 = No more messages to follow 1 = More messages to follow (default) values 2 to 255 are reserved

1.3.2.35 message_state

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer message_state
Length 2 Integer Length of value part in octets
Value 1   Values as per section 1.2.28

1.3.2.36 callback_num

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer  
Length 2 Integer Length of Value part in octets
Value Var 4 - 19Octet String

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

1.3.2.37 callback_num_pres_ind

Field Name Size octets Type Description
Parameter Tag 2 Integer callback_num_pres_ind
Length 2 Integer Length of Value part in octets
Value 1 Bit mask

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.

1.3.2.38 callback_num_atag

The callback_num_atag parameter associates an alphanumeric display with the call back number.

Field Name Size octets Type Description
Parameter Tag 2 Integer callback_num_atag
Length 2 Integer Length of Value part in octets
Value Var max 65Octet string

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.

1.3.2.39 number_of_messages

The number_of_messages parameter is used to indicate the number of messages stored in a mailbox.

Field Name Size octets Type Description
Parameter Tag 2 Integer number_of_messages
Length 2 Integer Length of Value part in octets
Value 1 Integer 0 to 99 = allowed values. Values 100 to 255 are reserved

1.3.2.40 sms_signal

The sms_signal parameter is used to provide a TDMA MS with alert tone information associated with the received short message.

Field Name Size octets Type Description
Parameter Tag 2 Integer sms_signal
Length 2 Integer Length of Value part in octets
Value 2 Integer Encoded as per [CMT-136]

1.3.2.41 alert_on_message_delivery

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer alert_on_message_delivery
Length 2 Integer Length of Value part in octets (= 0)
Value 0 No Value  

1.3.2.42 its_reply_type

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer its_reply_type
Length 2 Integer Length of Value part in octets
Value 1 Integer
            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
            

1.3.2.43 its_session_info

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer its_session_info
Length 2 Integer Length of Value part in octets
Value 2 Octet String
            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.

1.3.2.44 ussd_service_op

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.

Field Name Size octets Type Description
Parameter Tag 2 Integer ussd_service_op
Length 2 Integer Length of Value part in octets
Value 1 Octet String
            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