Протокол SMPP v.3.4 для рассылки Viber
ВНИМАНИЕ
Для использования данного вида интеграции Вам необходимоДля получения пароля для SMPP, Вам понадобится обратиться в техническую поддержку, с указанием Вашего логина и IP адресов, с которых будет осуществляться отправка
Функции
Параметры подключения
Необходимые настройки SMPP-клиента, для подключения:
- Используемый Протокол: SMPP 3.4;
- Адрес SMSC: smpp.szk-info.ru
- Порт SMSC: 9999
- Логин/Пароль: выдается индивидуально каждому партнеру при подключении;
- Типы подключения: TRAMCEIVER, TRANSMITTER / RECEIVER;
Набор символов для сообщений, формирование склеенных сообщений
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 октетов; ‘Message length: 0’; Optional parameter: message_payload (0x0424);
Параметры system_type, interface_version, addr_ton, addr_npi, address_range не анализируются
Дополнительные параметры
Для поддержания соединения в периоды отсутствия трафика используются PDU enquire_link
Таймаут: 1 минута;
Задержка в случае неудачного переподключения: 1 минута;
Верификация соединения (enquire_link PDU): 60 сек.;
Примечание: Enquire_link'и обязательны. Если клиент подключается к нам transmitter'ом мы ожидаем от него enquire_link'и, при их отсутствии в течение 2 минут – связь считается нарушенной и принудительно рвется.
Номер абонента всегда должен начинаться с «7» для абонентов России, использование «8» для отправки по России недопустимо.
Скорость передачи SMS не более 50 Viber в секунду.
Указание адреса, происходит в международном формате, использование специальных символов, таких как «+», ведущих нулей – недопустимо.
Обмен сообщениями
Для передачи сообщений между сервером и клиентом используются пакеты submit_sm, deliver_sm и соответствующие им ответные пакеты submit_sm_resp и deliver_sm_resp
SMPP-интерфейс предоставляет Партнерам техническую возможность по отправке в адрес абонентов Viber-сообщений следующего содержания:
• только текст (до 1000 символов)
• только изображение
• текст (до 1000 символов) и гиперссылку в виде кнопки
• текст (до 1000 символов), изображение, гиперссылку в виде кнопки
Для отправки Абоненту Viber-сообщения Партнер передает пакет submit_sm используя стандартные для протокола SMPP 3.4 параметры, а информация об изображении, кнопке, ссылке кнопки передается в TLV-параметрах.
Параметр |
Описание |
source_addr |
Отправитель. Допустимая длина 2-11 символов. |
destination_addr |
Получатель. MSISDN абонента. |
short_message |
Текст сообщения для отправки Абоненту. |
data_coding |
Схема / тип кодирования текста сообщения. |
registered_delivery |
Необходимость уведомления о статусе доставки сообщения: 0 - Партнеру не требуется уведомление о статусе доставки 1 - Партнеру требуется уведомление о статусе доставки |
schedule_delivery_time |
Функционал отложенной отправки с тем ограничением, что дата отложенной отправки может отличаться от текущей не более чем на сутки вперед. Поле schedule_delivery_time можно задавать как в относительном, так и в абсолютном формате. Кроме того, поддерживается специальный формат, при помощи которого возможно задать интервал доставки по локальному часовому поясу абонента-получателя, вычисленному по БД DEF-кодов операторов РФ: YYMMDDhhmmsstnnp, где YYMMDDhhmmsst - задает дату-время начала интервала отправки аналогично абсолютному формату времени nn - задает продолжительность интервала в 15-минутках, например для 8 часов это будет "32" p = 'A' - признак спецформата, знак того, что дату-время начала интервала доставки надо рассчитывать согласно часовому поясу абонента Указание schedule_delivery_time в специальном формате приводит либо к немедленной, либо к отложенной на завтра отправке (если указанный интервал по времени абонента сегодня уже прошел или датой четко указано завтрашнее время). |
validity_period |
Время жизни Viber-сообщения. Дата окончания жизни Viber-сообщения в формате "YYMMDDhhmmsstnnp". |
Для передачи текста сообщения следует использовать кодировку UCS2 (data_coding = 8). Для передачи сообщений в латинице возможно использование data_coding = 0, что соответствует кодировке GSM DEFAULT ALPHABET.
Длина текста передаваемого МТ сообщения составляет 1000 символов (ограничение на стороне Viber).
Длинные (многосегментные с точки зрения SMS/SMPP) текстовые сообщения рекомендуется передавать одной PDU, отправляя текст в TLV-параметре message_payload, id = 0x424.
Помимо основных параметров можно использовать опциональные TLV-параметры, специфичные для отправки сообщения в Viber:
TLV-параметр |
Поле |
Размер октетов |
Тип |
Описание |
Url изображения TLV-параметр 0x1436 |
Parameter tag |
2 |
Integer |
Id = 0x1436 |
Length |
2 |
Integer |
Длина параметра в октетах |
|
Value |
до 2048 |
Octet String |
Url-ссылка изображения для отправки в Viber. Пример: https://site.com/picture.jpg Символы, недопустимые в URL согласно стандарту HTTP-протокола, (спецсимволы, кириллица, юникод), должны быть закодированы (URLEncoded) по кодировке UTF-8. |
|
Ссылка кнопки TLV-параметр 0x1433 |
Parameter tag |
2 |
Integer |
Id = 0x1433 |
Length |
2 |
Integer |
Длина параметра в октетах |
|
Value |
до 2048 |
Octet String |
Ссылка кнопки для отправки в Viber Пример: https://site.com/button
Символы, недопустимые в URL согласно стандарту HTTP-протокола, (спецсимволы, кириллица, юникод), должны быть закодированы (URLEncoded) по кодировке UTF-8. |
|
Текст кнопки TLV-параметр 0x1434 |
Parameter tag |
2 |
Integer |
Id = 0x1434 |
Length |
2 |
Integer |
Длина параметра в октетах |
|
Valuer |
до 20 |
Octet String |
Текст кнопки для отправки в Viber (максимум 20 символов). Если текст содержит символы кириллицы, используйте кодировку UTF-8. Пример: 0xD0,0xBA,0xD0,0xBD,0xD0,0xBE,0xD0,0xBF,0xD0,0xBA,0xD0,0xB0 – соответствует строке "кнопка". |
Получение конечных статусов
В submit_sm PDU – необходимо выставить флаг registered_delivery = 0x01 (в SMPP по умолчанию 0x01), тогда будут приходить Deliver_ sm PDU c информацией о доставке.
В таких пакетах (в отличие от обычных Deliver_sm) поле esm_class будет выставлено в 0x3c.
В поле receipted_message_id будет выставлено то значение, которое вы получили в submit_sm_resp от нашей платформы. В поле 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 к одному логину, стаусы некоторых смс сообщений, отправленных от одного подключения, могут возвращаться на другое подключение.
Формат 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 |
12 |
C-Octet String Fixed Length (Decimal) |
done date |
12 |
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 |
Множественная отправка смс на один номер с одинаковым текстом |