Viber#
Поддерживается отправка следующих типов Viber-сообщений:
только текст;
только изображение;
текст + кнопка для перехода по ссылке;
текст + изображение + кнопка для перехода по ссылке.
Запрос на отправку сообщений#
Метод: GET.
Примеры запросов#
GET-запрос с сообщением на латинице “test“ в простом текстовом формате.
http://partner.ru/login?clientId=79161234567&message=test&pass=123&serviceId=login
GET-запрос с текстом сообщения на кириллице “тест“ в URL-формате.
http://partner.ru/login?clientId=79161234567&message=%D1%82%D0%B5%D1%81%D1%82&pass=123&serviceId=login
Параметры запросов#
В таблице обязательные параметры выделены полужирным шрифтом.
Параметр  | 
Тип  | 
Описание  | 
|---|---|---|
clientId  | 
string  | 
Номер телефона абонента, до 25 символов. 
Примеры: 79036550550, +79036550550, 8-903-655-05-50, 89036550550. 
 | 
message  | 
string  | 
Текст сообщения в кодировке UTF-8. 
Максимальная длина: 1000 символов. 
 | 
serviceId  | 
string  | 
Идентификатор сервиса (логин), от имени которого происходит отправка сообщения. Логин serviceId заводится Сервис-провайдером при подключении сервиса и сообщается Партнёру.  | 
pass  | 
string  | 
Пароль для авторизации в сервисе. Пароль заводится Сервис-провайдером при подключении сервиса и сообщается Партнёру.  | 
ptag  | 
string  | 
Идентификатор сообщения в системе Партнёра. 
Может содержать от одного до 50 символов. 
Допустимые символы: 0…9a…zA…Z- 
Это может быть любой идентификатор в системе Партнёра. 
Примечание Например, уникальный идентификатор сообщения или идентификатор подразделения, инициирующего запрос на отправку. В отличие от параметра partnerMsgId, который нужен для контроля повторных отправок и дублирования, Сервис-провайдер не контролирует значения, переданные в параметре ptag (проверяется только соответствие формату). Сервис-провайдер опционально возвращает Партнёру данный идентификатор в рамках запроса на получение статуса доставки сообщения (этот функционал подробно описан в разделе «Сервис получения статусов доставки сообщений»).  | 
imageUrl  | 
string  | 
|
buttonText  | 
string  | 
Текст кнопки. Если передан buttonText, то обязательно должен быть передан
и buttonLink. 
Максимальная длина: 30 символов. 
 | 
buttonLink  | 
string  | 
|
viberTtl  | 
integer  | 
Время жизни сообщения. 
Допустимый диапазон, сек: от 30 до 86400. 
Рекомендуемое минимальное значение: 60. 
В течение указанного времени Viber будет пытаться доставить сообщение абоненту. 
Значения, выходящие за пределы минимального или максимального, будут к ним
округлены. 
Если параметр не передан, будет использовано значение по умолчанию
(согласованное при запуске сервиса). 
Если время жизни сообщения истекло, ему присваивается статус не доставлено. 
 | 
sending_time  | 
string  | 
Локальное время отправки сообщения абоненту. 
Задается в формате hh_hh, где два значения часа задают временной
промежуток, в который должно быть отправлено сообщение. 
Предупреждение Если параметр указан, то его значение не может быть пустым. Примечание Например, при значении параметра sending_time=10_20, сообщение будет отправлено в период с 10:00 до 20:00 по местному времени в часовом поясе абонента. Часовой пояс абонента определяется не по фактическому местоположению
абонента. 
Если Партнёр не передает параметр time_zone, то часовой пояс абонента
определяется по номеру телефона. 
Если Партнёр передает в параметре time_zone часовой пояс, то сообщение будет
отправлено абоненту по местному времени этого часового пояса. 
 | 
time_zone  | 
string  | 
Часовой пояс абонента. Задается в формате ±hh:mm. Подробнее о формате см. ISO 8601. Если Партнёр передает в этом параметре часовой пояс, то сообщение будет отправлено абоненту по местному времени этого часового пояса, иначе часовой пояс абонента определяется по номеру телефона абонента. Примечание Абонент с хабаровским номером находится в Москве. Возможны следующие варианты отправки: 
 Для нулевой зоны обязательно указание знака, неважно «+» или «-«. 
Знак «+» при кодировании URL преобразуется в «%2B». 
Например, часовой пояс +04:00 передается так time_zone= %2B04:00. 
 | 
source  | 
string  | 
Имя отправителя. Сообщение абоненту будет отправлено с сервисного имени, указанного в данном параметре. Данный параметр не является обязательным. Если параметр отсутствует в запросе, то сообщение будет отправлено абоненту с имени по умолчанию (настройка на стороне Сервис-провайдера). Важно Использование данного параметра недоступно для Партнёра по умолчанию. Функционал может быть включен после согласования с Сервис-провайдером. В этом случае для Партнёра настраивается список разрешенных имен отправителей, либо включается функционал динамической подписи.  | 
output  | 
string  | 
Формат ответа на запрос. Если output=xml, то ответ на запрос будет сформирован в виде XML (см. Ответ в формате XML). Если параметр не задан или имеет другое значение, будет применён формат по умолчанию: text/plain (см. Ответ на запрос).  | 
partnerMsgId  | 
string  | 
Уникальный идентификатор сообщения в системе Партнёра. Допустимая длина: от одного до 50 символов. Данный параметр используется для контроля повторных отправок и дублирования. Партнёр может отправить запрос на отправку сообщения с одним и тем же partnerMsgId несколько раз. При этом: 
 Сервис-провайдер опционально возвращает Партнёру данный идентификатор в рамках запроса на получение статуса доставки сообщения (См. Сервис получения статусов доставки). Использование данного параметра недоступно по умолчанию. Подключение данного функционала нужно согласовать со своим курирующим менеджером.  | 
shortenLinks  | 
boolean  | 
Параметр указывает, требуется ли сокращать ссылки в тексте сообщения. Важно Используется только для одиночных сообщений. В случае каскадной доотправки необходимо использовать параметр shorten_list (см. Каскадные сообщения). Важно Использование данного параметра недоступно по умолчанию. Подключение данного функционала необходимо согласовать со своим курирующим менеджером. Подробнее: Сервис сокращения ссылок.  | 
Примечание
Возможные комбинации параметров в запросе:
message;
imageUrl;
message + buttonText + buttonLink;
message + imageUrl + buttonText + buttonLink.
Ответ на запрос#
Примечание
Сервис-провайдер отправляет сообщения абонентам только при успешной обработке запроса.
Ответ при успешной отправке запроса#
На успешный запрос Сервис-провайдер возвращает Партнёру:
HTTP-код
200OK;идентификатор сообщения в системе Сервис-провайдера.
OK
4095284974
Ответный код  | 
Описание  | 
Возможные действия Партнера  | 
|---|---|---|
200  | 
Успешная обработка запроса. 
В теле ответа передаётся идентификатор, присвоенный
сообщению Сервис-провайдером. 
Идентификатор представляет собой 64-битное целое
положительное число. 
 | 
Штатная работа с сервисом.  | 
Ошибки при отправке запроса#
При передаче ошибочного запроса в теле ответа может возвращаться короткое текстовое сообщение об ошибке.
Пример ответа в случае возникновения ошибки  неверного сочетания serviceId/pass:
Invalid password
Код  | 
Описание  | 
Действие Партнера  | 
|---|---|---|
400  | 
Отсутствуют обязательные параметры или они заданы некорректно. Подробнее
        Например, не передан параметр
          | 
Что делатьПовторить запрос с правильным сочетанием параметров и их корректными значениями.  | 
401  | 
Передано неверное сочетание параметров   | 
Что делать
        Повторить запрос с верными значениями
        параметров   | 
402  | 
Исчерпан остаток оплаченных сообщений (для Партнёров, работающих по предоплате).  | 
Что делатьДля возобновления отправки сообщений необходимо внести предоплату и обратиться к своему курирующему менеджеру. Повторять запрос Партнёру не следует.  | 
403  | 
Сервис с переданным   | 
Что делатьСледует обратиться к своему курирующему менеджеру. Повторять запрос Партнёру не следует.  | 
406  | 
Невозможно послать сообщение абоненту с переданным
  | 
Что делатьПовторять запрос Партнёру не следует.  | 
408  | 
Превышение допустимой скорости отправки сообщений. ПодробнееДля сервиса Партнёра установлена допустимая скорость 10 запросов в секунду. Партнёр отправил 12 запросов в секунду. 
        Первые 10 запросов будут успешно обработаны:
        в ответ на эти запросы Сервис-провайдер вернет
        Партнёру статус  
        В ответ на последние два запроса
        Сервис-провайдер вернет Партнёру статус
          | 
Что делатьПартнёр может повторить запрос, не превышая допустимой скорости.  | 
409  | 
Запрещена отправка дубликатов. ПодробнееДля сервиса Партнёра включен функционал блокировки дубликатов. Партнёр отправил в течение суток три запроса для отправки сообщения на один номер с одинаковым текстом. Первый запрос будет успешно обработан, и сообщение будет отправлено абоненту. 
        В ответ на последние два запроса
        Сервис-провайдер вернет Партнёру статус
         Функционал блокировки дубликатов по умолчанию отключен для Партнёра. Функционал может быть включен по просьбе Партнёра. Также Сервис-провайдер может включить функционал блокировки дубликатов для Партнёра при необходимости. Например, в ответ на жалобы абонентов.  | 
Что делатьПовторять запрос Партнёру не следует. При необходимости отправки дубликата сообщения, Партнёр может обратиться в службу техподдержки Сервис-провайдера, предоставив наиболее полную информацию об условиях возникновения данной ситуации.  | 
414  | 
Превышение допустимой длины текста сообщения,
переданного в параметре   | 
Что делатьПартнёр может повторить запрос, сократив текст сообщения до допустимой длины.  | 
500  | 
Внутренняя ошибка сервера. Технические проблемы на стороне Сервис-провайдера.  | 
Что делать
        При получении статуса  
        При получении статуса   | 
503  | 
Запрос в обработке. Подробнее
        Ошибка может возникнуть, если Партнёр
        практически одновременно передает несколько
        запросов с одним и тем же значением параметра
         
        Пока не обработан первый запрос, на следующие
        запросы с тем же   | 
Что делать
        Партнёру следует выдержать паузу и подождать
        ответ на первый запрос с переданным значением
        параметра  Партнёр может повторить запрос, если не получит ответ на первый запрос.  | 
Ответ в формате XML#
output=xml.200– запрос успешно обработан;500– внутренняя ошибка сервера, технические проблемы на стороне Сервис-провайдера.
Примеры ответов#
200) .<?xml version="1.0" encoding="utf-8"?>
<response>
    <code>200</code>
    <text>OK</text>
    <payload>
        <id>4095284976</id>
    </payload>
</response>
Пример ответа в формате XML при ошибочной отправке запроса: неверное сочетание serviceId/pass.
<?xml version="1.0" encoding="utf-8"?>
<response>
    <code>401</code>
    <text>Invalid password</text>
</response>
При получении статуса 500 или при истечении тайм-аута ожидания ответа, Партнёр должен выдержать паузу минимум 1 минуту. По истечении паузы Партнёр может повторить запрос.
Примечание
При получении статуса 500 более 10 раз необходимо прекратить передачу запроса. После чего передать в службу техподдержки Сервис-провайдера наиболее полную информацию об условиях возникновения данной ошибки для дальнейшего анализа.
В таблице обязательные параметры выделены полужирным шрифтом.
Наименование  | 
Описание  | 
Примечание  | 
|---|---|---|
xml version  | 
Номер версии XML.  | 
Содержится в прологе XML-документа.  | 
encoding  | 
Кодировка.  | 
Содержится в прологе XML-документа.  | 
response  | 
Корневой элемент, содержит элементы
  | 
|
code  | 
Код ответа (значения соответствуют HTTP-кодам для ответов с типом text/plain).  | 
Подробнее см. в разделе Ответ на запрос.  | 
text  | 
Дополнительная краткая текстовая информация об ответе.  | 
Может содержать информацию об ошибке.  | 
payload  | 
Информация о сообщении, содержит элемент   | 
Передаются только в случае успешного
выполнения запроса (при значении
  | 
id  | 
Идентификатор, присвоенный сообщению Сервис-провайдером. Идентификатор представляет собой 64-разрядное целое положительное число.  | 
Viber-сессия#
Примечание
Функционал Viber-сессий недоступен по умолчанию. Для его подключения следует обратиться к своему курирующему менеджеру.
Подключение функционала сессий#
Важно
Для бизнес-аккаунтов, поддерживающих функционал Viber-сессий, доступны сообщения с типом “только текст“ или “только изображение“ (значение параметра InstantContent.type должно быть либо “TEXT“, либо “IMAGE_URL“).
Особенности работы сессий#
Начало сессии:
сессия может быть инициирована только подписчиком;
сессия начинается, когда подписчик отправляет первое сообщение Партнеру;
сессия не может быть инициирована изображением;
если в рамках переписки присутствует только один отправитель (неважно – подписчик или Партнер), то это не считается сессией, сообщения будут тарифицированы обычным образом.
Лимиты сессии:
продолжительность сессии по умолчанию 24 часа;
Партнер может отправить до 60 сообщений (после превышения данного лимита автоматически стартует новая сессия);
Партнер может отправлять до 10 сообщений без ответа подписчика (после превышения данного лимита сессия автоматически закрывается);
Партнер может отправлять только сообщения с типом “текст“ или “изображение“.
Завершение сессии:
по прошествии 24 часов;
по достижении лимита в 60 сообщений (автоматически стартует новая сессия);
по достижении лимита в 10 безответных сообщений от Партнера.