Project

General

Profile

SMPP кодеки

Smartswitch поддерживает следующие кодеки:

SMPP Codec ID кодек
0x00 кодек по умолчанию (см. ниже)
0x01 IA5 (CCITT T.50)/ASCII (ANSI X3.4)
0x02 Неопределенный бинарный поток (8 бит)
0x03 Latin 1 (ISO-8859-1)
0x04 Неопределенный бинарный поток (8 бит)
0x05 JIS (X 0208-1990)
0x06 Cyrllic (ISO-8859-5)
0x07 Latin/Hebrew (ISO-8859-8)
0x08 UCS2 (ISO/IEC-10646)
0x09 Кодировка пиктограм
0x0A ISO-2022-JP (Music Codes)
0x0D Расширенный Kanji JIS
0x0E KS C 5601

SMPP Codec ID шифруется в тело SMPP сообщения и по нему получатель может узнать в каком кодеке закодировано сообщение.
Кроме кодека 0x00 - по ID 0x00 невозможно узнать каким кодеком закодировано сообщение, и следует обращаться к партнеру, чтоб он сообщил, какой кодек используется для SMPP Codec ID 0x00.

Кодек 0x00.

Это специальный SMPP Codec ID.
Если в теле SMS указывается кодек 0x00, то это означает, что пиры договорились (устно или письменно) использовать определенный кодек, который не имеет выделенного стандартом SMPP Codec ID - так называемый кодек по умолчанию.
Оба пира должны сконфигурировать один и тот же кодек по умолчанию в настройках своих систем.
В Smartswitch кодек по умолчанию конфигурируется в одноименной опции в SMPP настройках пира.
Поскольку тело SMS не содержит четкого идентификатора используемого кодека (в отличие от остальных SMPP Codec ID), доставка SMS будет работать корректно только если оба пира сконфигурируют один и тот же кодек по умолчанию.
Обычно в качестве кодека по умолчанию используется GSM.

Кириллица и прочие не-латинские кодировки.

Предпочтительно использовать кодировку 0x08 - UCS2.
Это Юникод, в котором можно передавать кодировки всех языков.

Другие кодеки следует использовать если:
  • партнер по какой-то причине не поддерживает UCS2.
  • для большего сжатия сообщения (т.к. UCS2 использует 2 байта на символ, что ограничивает размер сообщения 70 символами)

Перекодировка кодеков.

Smartswitch поддерживает перекодировку сообщений на лету.
Перекодировка происходит, если согласно настройкам на терминаторе, требуется отправить на него сообщение в кодеке, который отличается от кодека, в котором пришло сообщение от оригинатора.
Smartswitch принимает сообщения от оригинатора в любом кодеке, и отправляет на терминатора в наиболее приоритетном сконфигурированном кодеке.
Если на терминаторе сконфигурировано несколько кодеков, и один из них совпадает с кодеком полученного сообщения, то перекодировки не происходит.
Если без перекодировки не обойтись, то Smartswitch пытается перекодировать сообщение в наиболее приоритетном кодеке.
Если в процессе перекодировки произошла потеря символов, например при перекодировке кириллического сообщения в 0x03 - Latin 1, то Smartswitch пытается закодировать следующим кодеком по списку.
Если ни одним кодеком не удалось закодировать сообщение без потери символов, то сообщение не пересылается на терминатора.

Если сообщение является сегментом много-сегментного сообщения, то перекодировки кодеков не происходит.
Это вызвано тем, что может быть такая ситуация, что через Smartswitch может передаваться сегмент 1, а через шлюз другого оператора - сегмент 2 одного и того же сообщения.
Если Smartswitch перекодирует в кодек А, а параллельно работающий шлюз - в кодек Б, то принимающий терминал будет иметь трудности с восстановлением сообщения из нескольких частей, закодированных разными кодеками.
Также у принимающего терминала будут трудности с объединением сообщения, если в процессе перекодировки будет изменен размер сегмента сообщения.
Поэтому, для предотвращения этих проблем, для много-сегментных сообщений перекодировка не происходит.
Если согласно настройкам Smartswitch ни один из терминаторов не поддерживает кодек сообщения, то сообщение будет отброшено и оригинатор сможет перемаршрутизировать его на свой резервный маршрут.

Биллинг в зависимости от кодека

Единицей биллинга является:

  • 140 байт для 1-сегментного SMS
  • 134 байт для много-сегментного SMS (для GSM кодека - 133 байт).

В зависимости от кодека, в единицу биллинга (140/134/133 байт) помещается различное кол-во символов текста:

SMPP Codec ID кодек кол-во символов в 1-сегментном SMS кол-во символов в 1 сегменте много-сегментного SMS
0x00 кодек по умолчанию, GSM 160 152
0x00 кодек по умолчанию, не GSM 140 134
0x01 IA5 (CCITT T.50)/ASCII (ANSI X3.4) 140 134
0x03 Latin 1 (ISO-8859-1) 140 134
0x06 Cyrllic (ISO-8859-5) 140 134
0x07 Latin/Hebrew (ISO-8859-8) 140 134
0x08 CS2 (ISO/IEC-10646) 70 67

Для GSM, размер 1 символа может быть 7 или 14 бит.
Обычные символы кодируются в 7 бит.
Некоторые спец. символы, напр. £, кодируются в 14 бит (7 бит + 7 бит символ экранирования).
Таким образом, такие специальные символы могут занимать место 2 обычных символов.

English translation

Also available in: PDF HTML TXT