Протокол SMPP v.3.4 для рассылки Viber
ВНИМАНИЕ
Для использования данного вида интеграции Вам необходимо зарегистрироваться на серверной платформе Stream Telecom, либо зарегистрироваться через менеджера компании. Отправитель 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 |
Множественная отправка смс на один номер с одинаковым текстом |