Протокол SMPP v.3.4 для рассылки SMS
ВНИМАНИЕ
Для использования данного вида интеграции Вам необходимо зарегистрироваться на серверной платформе Stream Telecom, либо зарегистрироваться через менеджера компании. При регистрации Вам присваивается логин, и тестовое имя отправителя SMS Info, которое будет автоматически удалено, после того как Вы запросите новое имя.
Для получения пароля для SMPP, Вам понадобится обратиться в техническую поддержку, с указанием Вашего логина и IP адресов, с которых будет осуществляться отправка
Функции
Необходимые настройки SMPP-клиента, для подключения: Используемый Протокол: SMPP 3.4; Адрес SMSC: smpp.szk-info.ru Порт SMSC: 2222 (резервный порт подключения 3700) Логин/Пароль:выдается индивидуально каждому партнеру при подключении; Тип подключения: TRANSCEIVER; Значения для TON и NPI src_addr_ton: 0x05 src_addr_npi: 0x01 dest_addr_ton: 0x01 dest_addr_npi: 0x01 |
Набор символов для сообщений, формирование склеенных сообщений
- Default Alphabet (GSM 3.38), 7-bit characters - maximum of 160 characters;
- Latin 1 (ISO-8859-1), 8-bit characters - limit is 140 characters;
- Unicode (UTF16/USC-2), 16-bit characters - limit is 70 characters;
Кодировка для сообщений на латинице: GSM 03.38, длина одного сообщения 160 символов. Запрещенные символы: ^,{,},\,[,],~,|,€ |
Кодировка для сообщений на кириллице: UTF16, длина одного SMS сообщения составляет 70 символов: |
Примечание: Для корректного отображения текста, необходимо указание - Data coding: 0x08 - SMPP Data Coding Scheme: UCS2 (ISO/IEC-10646) (0x08), а также формирование текста в UTF-16ВE (big endian) |
Отправка длинных (склеенных) сообщений возможна с использованием UDH или message_payload; |
Примечание: Message_payload – один из опциональных SMPP 3.4 TLV (tag-length-value) параметров, поддерживаемых SMPP сервером. Применяется, например, приотправке сообщений более 254 октетов;‘Messagelength:0’;Optionalparametermessage_payload(0x0424); |
При отправке SMS с UDH необходимо установить соответствующее значение ESM_class=0x40, DCS устанавливается согласно тексту и может быть UCS2 (ISO/IEC-10646) (0x08) для Unicode кодировки и DCS=0x00 для GSM-default кодировки. |
UDH представляет собой следующее:
0x05 0x00 0x03 1 октет - уникальный для данной группы SMS номер 1 октет - количество SMS для склейки 1 октет - порядковый номер SMS |
При формировании длинных сообщений больше 160 символов латиницей и 70 кириллицей, длина сообщения составляет: |
Латиница - Default Alphabet (GSM 3.38)
1 SMS - 160 символов; 2 SMS - 153 * 2 = 306 симв.; 3 SMS - 459 симв. и т.д. |
Кириллица - Unicode (UTF-16ВE)
1 SMS - 70 символов; 2 SMS - 67 *2 = 134 симв.; 3 SMS - 201 симв.; 4 SMS - 268 и т.д. |
Примечение: согласно спецификации для таких сообщений накладываются определенные ограничения на длину каждой составляющейSMS, т.е. здесь UDH всегда имеет 8-битную структуру, и соответственно длина текстовой части SMS не должна превышать 134 октетов (140-6). Т.е. в GSM-default длина текста каждого SMSв несжатом виде должна быть не более 153 символов (134*8/7=153), а в юникоде 67 символов (134 /2=67). |
Дополнительные параметры
- Таймаут: 1 минута;
- Задержка в случае неудачного переподключения: 1 минута;
- Верификация соединения (enquire_link PDU): 60 сек.;
Примечание: Enquire_link'и обязательны. Если клиент подключается к нам transmitter'ом мы ожидаем от него enquire_link'и, при их отсутствии в течение 2 минут – связь считается нарушенной и принудительно рвется. |
Номер абонента всегда должен начинаться с «7» для абонентов России, использовани «8» для отправки по России недопустимо. Скорость передачи SMS не более 50 SMS в секунду. Указание адреса, происходит в международном формате, использование специальных символов, таких как «+», ведущих нулей – недопустимо. Для буквенно-цифрового адреса – ограничение 11 символов; |
Получение конечных статусов
В submit_sm PDU – необходимо выставить флаг registered_delivery = 0x01 (в SMPP по умолчанию 0x01), тогда будут приходить Deliver_sm PDU c информацией о доставке. |
В таких пакетах (в отличие от обычных Deliver_sm) поле esm_class будет выставлено в 0x3c. |
В поле receipted_message_id будет выставлено то значение, которое вы получили в submit_sm_resp от нашей платформы. В поле strong>receipted_message_state будет выставлен статус доставки по протоколу smpp. |
Таким образом, deliver_sm PDU – содержит следующую информацию:
Operation: Deliver_sm (0x00000005) Message type: 0x0f |
Здесь в Optional parameters указывается - Message state: DELIVERED (2)
SMSC identifier: напр.: 23456789
В поле Message, присутствуют значения submit date и done date
message_state значение «2» - «Message is delivered to destination»
Примечание: При создании нескольких подключений по SMPP к одному логину, стаусы некоторых смс сообщений, отправленных от одного подключения, могут возвращаться на другое подключение. |
Особенностей PDU нет, они определяются протоколом. Формат DR соответствует формату:
Field |
Size (octets) |
Type |
Id |
10 |
C-Octet String (Decimal) |
sub |
3 |
C-Octet String Fixed Length (Decimal) |
dlvrd |
3 |
C-Octet String Fixed Length (Decimal) |
submit date |
10 |
C-Octet String Fixed Length (Decimal) |
done date |
10 |
C-Octet String Fixed Length (Decimal) |
stat |
7 |
C-Octet String Fixed Length |
err |
3 |
C-Octet String Fixed Length |
text |
var. max. 65 |
C-Octet String (Decimal) |
Статусы SMS сообщений (по информации от SMS центров)
Статус |
Значение |
Тип |
Delivered |
Доставлено |
Окончательный |
Not delivered |
Не доставлено |
Окончательный |
Expired |
Просрочено |
Окончательный |
Список SMPP ошибок
Command status |
Значение |
10 |
Не зарегистрировано/некорректное имя отправителя. |
11 |
Некорректная длина номера/номер в стоп-листе. |
13 |
Неверный логин или пароль/логин заблокирован. |
69 |
Ошибка при формировании пакета. |
1009 |
Заблокировано модерацией. |
1035 |
Недостаточно средств. |
2000 |
Множественная отправка смс на один номер с одинаковым текстом. |