Протокол SMPP v.3.4 для рассылки SMS
ВНИМАНИЕ
Для использования данного вида интеграции необходимоДля получения пароля для SMPP обратитесь в техническую поддержку. Укажите логин и перечень IP–адресов, с которых будет выполняться отправка.
Функции
Настройки SMPP-клиента, необходимые для подключения
Параметр |
Значение |
Протокол |
SMPP 3.4 |
Адрес SMSC |
smpp.szk-info.ru |
Порт SMSC |
2222 (резервный порт подключения 3700) |
Логин/Пароль |
Выдается индивидуально каждому партнеру при подключении |
Значения для TON и NPI |
src_addr_ton: 0x05 |
Параметры сообщений
Набор символов для сообщений
Для сообщений могут быть использованы следующие кодировки:
- 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. Длина одного сообщения составляет 70 символов.
Для корректного отображения необходимо формирование текста в UTF-16ВE (big endian) и указание параметров:
- Data coding: 0x08-SMPP.
- Data Coding Scheme: UCS2 (ISO/IEC-10646) (0x08).
Формирование склеенных сообщений
Отправка длинных (склеенных) сообщений возможна с использованием UDH или message_payload.
Message_payload — один из опциональных SMPP 3.4 TLV (tag-length-value) параметров, поддерживаемых SMPP сервером. Применяется, например, при отправке сообщений более 254 октетов (Message length: 0. Optional parameter: message_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.
Согласно спецификации, на длину каждой составляющей SMS в составе склеенных сообщений накладываются ограничения. UDH имеет 8-битную структуру, длина текстовой части SMS не должна превышать 134 октетов (140 - 6). В GSM-default длина текста каждого SMS в несжатом виде должна быть не более 153 символов (134х8/7=153), а в Unicode — 67 символов (134 /2=67).
При формировании сообщений больше 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 символов и т.д.
Дополнительные параметры
- Таймаут: 1 минута;
- Задержка в случае неудачного переподключения: 1 минута;
-
Верификация соединения (enquire_link PDU): 60 сек.
Enquire_link являются обязательными. При подключении с помощью transmitter ожидается получение enquire_link. При их отсутствии в течение 2 минут связь считается нарушенной и принудительно рвется. - Для отправки по России номер абонента должен начинаться с «7».
- Указание адреса происходит в международном формате. Использование специальных символов, таких как «+», ведущих нулей — недопустимо.
- Ограничение буквенно-цифрового адреса — 11 символов.
- Скорость передачи SMS не более 50 SMS в секунду.
Получение конечных статусов
Чтобы получать Deliver_sm PDU c информацией о доставке, в submit_sm PDU необходимо выставить флаг registered_delivery = 0x01.
В таких пакетах будут выставлены следующие значения полей:
- esm_class: 0x3c.
- receipted_message_id: значение, полученное в submit_sm_resp от Stream Telecom.
- 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 значение (Значение message_id полученного в submit_sm_resp PDU) – «Message is delivered to destination».
При создании нескольких подключений по SMPP к одному логину, статусы некоторых SMS, отправленных от одного подключения, могут возвращаться на другое подключение.
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 |
Заблокировано модерацией |
1010 |
Лимит SMS превышен |
1011 |
Время отправки не соответствует разрешённому |
1035 |
Недостаточно средств |
2000 |
Множественная отправка SMS на один номер с одинаковым текстом |