SMPP кодеки¶
- Table of contents
- 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 обычных символов.