This documentation is for Adobe Campaign v8.7.2 and later.
For older versions, please read the Campaign Classic v7 documentation.
When sending SMS through an SMS provider, you will encounter 3 different kinds of SMS:
You need to distinguish between acknowledgments (RESP PDU, part of the SMPP protocol) and SR. A SR is a kind of SMS that is sent through the network end-to-end, whereas an acknowledgement is only a confirmation that one transfer has been successful.
Both acknowledgements and SR can trigger errors, distinguishing between the two will help troubleshooting.
An SMS carries more information than text. Here a list of what you can expect to find in an SMS:
Encoding of SMS is a vast, complex subject with many traps and non-conforming implementations!
The first rule is always contact the SMPP provider in case of encoding problems. Only they, have precise knowledge of the encoding they support and special rules that may apply due to limitations in their technical platform. Make them check what you send them and what they send back to you, it is the only path to a successful and stable interconnection.
SMS messages use a special 7 bits encoding, often called the GSM7 encoding. Wikipedia has a good article about it (GSM 03.38 in English).
In the SMPP protocol, GSM7 text will be expanded to 8 bits per character for easier troubleshooting. The SMSC will pack it into 7 bits per character before it is sent to the mobile. This means that the short_message field of the SMS may be up to 160 bytes long in the SMPP frame whereas it is limited to 140 bytes when sent on the mobile network (the most significant bit is simply discarded).
In case of encoding problems, here are some important things to check:
The data_coding field tells which encoding is used. A major problem is that the value 0 means default SMSC encoding in the specification, in general it means GSM7, but that’s not always the case. Check with the SMPP provider which encoding is associated with data_coding = 0. Other data_coding values tend to follow the specification, but the only way to be sure is to check with the SMPP provider.
The maximum size of a message depends on its encoding. This table sums up all the relevant information:
Encoding | Usual data_coding | Message size (characters) | Part size for multipart SMS | Available characters |
---|---|---|---|---|
GSM7 | 0 | 160 | 152 | GSM7 basic character set + extension (extended characters take 2 characters) |
Latin-1 | 3 | 140 | 134 | ISO-8859-1 |
UCS-2 UTF-16 | 8 | 70 | 67 | Unicode (varies from phone to phone) |
Multipart SMS (often called long SMS) are SMS that are sent in multiple parts. Due to technical limitations in the mobile network protocol, a SMS cannot be larger than 140 bytes (see the SMS text encoding section below for the number of characters that can fit in a SMS) so longer messages need to be split.
Each part of a long message is an individual SMS. These parts travel independently on the network and are assembled by the receiving mobile phone. In order to handle retries and connectivity problems gracefully, Campaign sends parts in reverse order and asks for a SR only on the first part of the message (the one that is sent last); as the mobile phone only displays a message when it received its first part, retries on additional parts won’t produce duplicates on the mobile phone.
The maximum number of SMS per message can be set per delivery using the Maximum number of SMS per message setting in the delivery template. Messages that go above this limit will fail during sending with a SMS too long failure reason.
There are 2 ways to send long SMS:
UDH is the default and recommended way to send long messages. In this mode the connector splits the message in multiple SUBMIT_SM PDUs with UDH information in them. This protocol is the one used by mobile phones themselves, meaning that Campaign has the most control over the message generation, making it capable to compute exactly how many parts were sent and how they were split.
message_payload is a way to send the whole long message in a single SUBMIT_SM PDU. The provider will have to split it, which means that it’s impossible for Campaign to know exactly how many parts have been sent. Some providers require this mode, only use it if they don’t support UDH.
See the description of the esm_class, short_message and message_payload fields of the SUBMIT_SM PDU above for more details about the protocol and formats.
While Adobe Campaign supports both UDH and message_payload for sending, only message_payload is supported for incoming SMS (MO).