Расширение API для отправки сообщений в приложение Viber
Расширение API для отправки сообщений в приложение Viber
Структура HTTP POST-запроса
Основные параметры:
[user] => login зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X [pass] => password пароль пользователя Адрес обращения: http://web.smsgold.ru/http2/ или https://web.smsgold.ru/http2/ Тип авторизации: PLAIN (открытым текстом) Метод отправки запроса: POST
Максимальная длина сообщений: 1000 символов.
Авторизация
Авторизация требуется при каждом подключении к серверу независимо от дальнейших действий.
| ПАРАМЕТР | ЗНАЧЕНИЕ |
|---|---|
| [user] | зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X |
| [pass] | пароль пользователя |
Предварительная загрузка картинки
Для отправки сообщения, содержащего картинку, необходима предварительная загрузка картинки на платформу и получение идентификатора (определить, что идет загрузка картинки можно по полю [action] => imageviload):
| ПАРАМЕТР | ЗНАЧЕНИЕ |
|---|---|
| [action] | imageviload |
| [imagevi_file] |
путь к файлу, допустимые форматы файлов: JPG, GIF, PNG. максимальный размер - 10 Мб. |
- Пример запроса к серверу для предварительной загрузки картинки...
Пример запроса на PHP:
<?php header('Content-type: text/xml'); $ch = curl_init(); $data = array( 'user' => '10XXX', 'pass' => 'PASSWORD', 'action' => 'imageviload', 'imagevi_file' => base64_encode(file_get_contents("./path/file_name.jpg")) ); curl_setopt($ch, CURLOPT_URL, 'http://web.smsgold.ru/http2/'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); $res = curl_exec($ch); curl_close($ch); echo $res; ?>
<?xml version="1.0" encoding="UTF-8"?>
<output>
<xml_result action="http_post_imageviload" err="">
<result format="JPG/GIF/PNG">
<imagevi imagevi_id="XXXXXXXXXXX" err="" description="картинка успешно загружена"></imagevi>
</result>
</xml_result>
</output>
*err="" - номер ошибки, возникшей при загрузке, если ошибки нет, то err=null либо err="0"
Отправка сообщения
Параметры передачи сообщения http-серверу в виде POST-запроса (определить, что идет отправка сообщения можно по полю [action] => sendviber):
| ПАРАМЕТР | ЗНАЧЕНИЕ |
|---|---|
| [action] | sendviber |
| [text] | текст сообщения |
| [imagevi_id] | идентификатор картинки (необходима предварительная загрузка картинки на платформу и получение идентификатора) |
| [buttonvi_text] | текст кнопки (максимум 20 символов) |
| [buttonvi_link] | ссылка кнопки, URL для ссылки должен начинаться на http:// или https:// (максимум 2048 символов) |
| Возможные варианты группировки для отправки: |
[text] [text] + [buttonvi_text] + [buttonvi_link] [text] + [buttonvi_text] + [buttonvi_link] + [imagevi_id] |
| [number] |
номер или список телефонных номеров получателей сообщений в международном формате через запятую (Разрешается использование как [number], так и [base_id]) |
| [base_id] |
кодовое имя Группы контактов из Адресной книги в Личном кабинете (Разрешается использование как [number], так и [base_id]) |
| [sender] | имя отправителя, разрешенное клиенту для отправки Viber сообщений |
| [validity_period] | время жизни сообщения в минутах - максимальное время, в течение которого сообщение должно быть доставлено на телефон. Если в течение этого времени доставка не возможна (например абонент не в зоне действия сети или телефонный аппарат абонента выключен), то сообщение доставлено не будет (необязательный параметр, значение по умолчанию: 1440 минут (24 часа)) |
| [time_period] | период отправки сообщения в формате "H:i-H:i" (час:мин-час:мин), в течение которого сообщение должно быть доставлено получателям (например 10:00-21:00). Опция позволяет запретить доставку сообщений, например, в ночное время. Для указанного периода времени можно уточнить часовой пояс в [time_local] |
| [time_local] |
выбор часового пояса для опции [time_period]: 1 - по местному время получателя 0 - по часовому поясу, выбранному в личном кабинете отправителя (значение по умолчанию) |
| [autotrimtext] | on - обрезать все пробелы и переводы строк в начале и конце сообщения (значение по умолчанию - off) |
| [viber_type] |
вариант отправки сообщения: пустое значение или параметр отсутствует - простая отправка Viber сообщения (значение по умолчанию) S - вариант отправки "каскад" - если у абонента отсутствует месенджер Viber - будет произведена отправка сообщения с помощью услуги SMS. В таком варианте текст и имя отправителя для SMS и Viber следует передавать с помощью следующих параметров: |
| [text] | текст сообщения для SMS |
| [sender] | имя отправителя, разрешенное клиенту для отправки SMS сообщений |
| [viber_text] | текст сообщения для Viber |
| [viber_sender] | имя отправителя, разрешенное клиенту для отправки Viber сообщений |
- Пример запроса к серверу для отправки текста на несколько номеров...
Пример запроса на PHP:
<?php header('Content-type: text/xml'); $ch = curl_init(); $data = array( 'user' => '10XXX', 'pass' => 'PASSWORD', 'action' => 'sendviber', 'sender' => 'SmsGold', 'number' => '79XXXXXXXXX, 79XXXXXXXXX, ...', 'imagevi_id' => 'XXXXXXXXXXX', 'buttonvi_text' => 'Текст кнопки', 'buttonvi_link' => 'Ссылка кнопки' ); curl_setopt($ch, CURLOPT_URL, 'http://web.smsgold.ru/http2/'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); $res = curl_exec($ch); curl_close($ch); echo $res; ?>
<?xml version="1.0" encoding="UTF-8"?>
<output>
<xml_result action="http_post_sendviber" err="">
<result viber_group_id="XX-XXXX-XX">
<viber viber_id="XXXXXXXXXXX" err="" number="7XXXXXXXXXX" parts="количество частей из которых состоит текст сообщения"><![CDATA[текст отправленного сообщения...]]></viber>
<viber viber_id="XXXXXXXXXXX" err="" number="7XXXXXXXXXX" parts="количество частей из которых состоит текст сообщения"><![CDATA[текст отправленного сообщения...]]></viber>
…
</result>
</xml_result>
</output>
*err="" - номер ошибки, возникшей при отправке, если ошибки нет, то err=null либо err="0"
(может быть как для всего пакета сообщений - ошибка обработки самого запроса, так и для одного конкретного номера - ошибка номера, направления и т.д.)
Номера телефонов в любых типах запросов должны быть представлены в международном формате без символа "+" (например: 7XXXXXXXXXX)