Протокол SMPP v.3.4 для рассылки Viber

Stream_Telecom_SMPP_ Viber.pdf

Функции

Параметры подключения

Необходимые настройки 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

Множественная отправка смс на один номер с одинаковым текстом

* Все функции могут быть доработаны на усмотрение разработчиков, внедряющих службы SMS в систему 1С.