Clients can use SMPP to deliver and receive mobile terminated (MT) messages, mobile originated (MO) messages and delivery reports (DLR messages) to and from the CM.com SMS gateway. CM.com supports SMPP protocol version 3.4.
If you would like to get the South African SMPP settings, please reach out to your Account Manager.

Delivery receipts

Delivery receipts are sent in the short_message field of a deliver_sm or the message_payload TLV of a data_sm PDU, as per account configuration. In both cases, the message state is available as a message_state TLV attached to the PDU as well as in the actual receipt. Use whichever is more convenient.

Global description

The following format is used:

id:IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII submit date:yyyyMMddHHmmss done date:yyyyMMddHHmmss stat:SSSSSSS err:EEE

The number and order of fields is fixed, and they are separated by a single ASCII space. It is unwise to depend on this, however; for extendibility, you should not assume any number or ordering of fields and accept arbitrary whitespace as separator.

Similarly, though sizes are specified, strings not of fixed length may vary in size -- the specified size only reflects the maximum returned size as currently implemented. In no case will the total message length exceed 255 characters, however.

Field breakdown

FieldSizeTypeDescription
id32stringThe message ID allocated to the message by the SMSC when originally submitted.
stat7Fixed length stringThe final status of the message as specified in Table Message state values or ENROUTE for receipts of pending messages.
submit date14Fixed length stringThe time and date at which the short message was sent. Formatted: yyyyMMddHHmmss
done date14Fixed length stringThe time and date at which the short message reached its final state. Formatted: yyyyMMddHHmmss

Message state values

Message stateFinal message statesDescription (from SMPP standard)CM.com specific description
DELIVEREDDELIVERDMessage is delivered to destination.Message was delivered at the handset.
EXPIREDEXPIREDMessage validity period has expired.
DELETEDDELETEDMessage has been deleted.Not used.
UNDELIVERABLEUNDELIVMessage is undeliverable.Message was not delivered at the handset.
ACCEPTEDACCEPTDMessage is in accepted state (i.e. has been manually read on behalf of the subscriber by customer service).Message has been buffered at the operator network.
UNKNOWNUNKNOWNMessage is in an invalid state.Not used.
REJECTEDREJECTDMessage is in a rejected state.Message was not accepted by the server.

Notable differences with the example format given in the standard:

  • Strings are not zero-terminated but whitespace-separated. As such, no string contains whitespace.
  • The message id is not a 10-digit decimal but a 32-character string.
  • The date specifies a 4-digit year, not a 2-digit one, and includes seconds.
  • The 'sub', 'dlvrd' and 'text' fields are not available.

Single connection

In order to use a single connection to send messages for all operators and tariffs the following proprietary TLVs are supported for both the DELIVER_SM PDUs and the SUBMIT_SM PDUs (please note that the tariff TLV is not yet used for DELIVER_SM PDUs). The "basic unit" of the tariff field is presently cents for all accounts.

FieldSize octetsTypeDescription
Parameter tag2Integer0x1401
Length2IntegerLength of Value part
Value1-7C-Octet string(Decimal)MCC/MNC of operator
FieldSize octetsTypeDescription
Parameter tag2Integer0x140A
Length2IntegerLength of Value part
Value1-6C-Octet string(Decimal)Tariff in basic unit

Did this page help you?