Viber API что это такое

13 авг в 2019 63K 07db1e2fd135868acba3fc1ac19e802b.jpg

Поговорим о создании простого чат-бота Viber для пересылки сообщения. 

Термины и определения

Чат-бот Viber – программа Viber, реализованная через паблик-аккаунт, с которой пользователь может взаимодействовать для достижения какой-либо цели.

Паблик-аккаунты – специально созданные публичные аккаунты для общения и взаимодействия с клиентами (в том числе с помощью чат-ботов). Частным случаем паблик-аккаунтов являются паблик-чаты, где общается какая-либо группа людей.

Viber-ссылка – специальная ссылка для открытия контакта, чат-бота или другого ресурса в приложении Viber. Начинается с особого префикса viber://. Например: viber://pa?chatURI=hello2bot.

Создадим самого простого чат-бота для Viber. Почему самого простого? Потому что у новичков обычно возникает уйма вопросов. Естественно, такой простой чат-бот нужен для проверки того, что все работает. Тем более функционал простого бота можно расширять дальше по своему усмотрению.

Цель: бот будет пересылать обратно наше сообщение.

d0159d0c772b228975eaa4dc80dacb4f31fd94cb.jpeg

По сути, площадка для размещения чат-бота – это обычный web-хостинг. А сам бот в нашем случае – один PHP-файл.

Если вы сами хотите развернуть хостинг, то можно использовать связку: Apache + PHP + MySQL, но лучше воспользоваться услугами хостинг-провайдера, где установлено все необходимое, например, Timeweb.

Технология работы бота проста:

  • Мы пишем в чат сообщение, оно уходит на сервер Viber.
  • Viber обращается к нашему серверу (скрипту) через HTTP-запрос.
  • На это наш сервер (скрипт) предоставляет ответ, который уходит обратно на сервер Viber.
  • Ответ приходит в чат.

А теперь пошаговый процесс создания (из 13 шагов):

1. Переходим на сайт разработки. Предварительно у вас на смартфоне должно быть установлено приложение Viber.

2. Вводим номер телефона и авторизуемся.

3. Viber пришлет код подтверждения – вводим его и нажимаем «Дальше».

4. Нажимаем кнопку «Создать бот» и заполняем необходимые поля:

  • Account Image – загрузите картинку 400×400, которая будет отображаться в профиле паблик-аккаунта и как значок в сообщениях.
  • Account Name – имя, которое будет отображаться в заголовке у бота.
  • URI – придумайте идентификатор, по которому можно будет найти бота.
  • Category – выберите одну из 7 основных категорий.
  • Subcategory – выберите из списка подкатегорию, в которой будет функционировать ваш бот.
  • Language – выберите основной язык.
  • Account Description – подробнее опишите создаваемого бота.
  • Website Address – по желанию укажите адрес вашего сайта.
  • Email Address – адрес электронной почты.
  • Location – локация, местоположение.

5. Ставим галочку о принятии соглашения и нажимаем «Create».

6. После этого вы получите токен для аутентификации Viber. Скопируйте и сохраните его.

7. Теперь загрузите к себе на компьютер заготовку для чат-бота: github.com/the-lans/bots/tree/master/Viberbot

Прямая ссылка на скачивание всего архива: github.com/the-lans/bots/archive/master.zip

8. Распакуйте и откройте файлы index.php и php из папки Viberbot.

9. В этих файлах необходимо изменить некоторые параметры.

В файле index.php необходимо изменить: 

  • AUTH_TOKEN на токен вашего паблик-аккаунта Viber.
  • HelloBot на имя вашего бота, под которым он будет вам отвечать.

В файле set_webhook.php необходимо изменить: 

  • AUTH_TOKEN на токен вашего паблик-аккаунта Viber.
  • WEBHOOK_URL на URL вашего вебхука, т.е. URL нахождения файла index.php на вашем хостинге.

10. По требованию Viber на вашем сайте должен быть установлен сертификат SSL. Такой сертификат можно заказать как платно (например, Sectigo Positive SSL), так и бесплатно (SSL Let’s Encrypt). Подробнее о SSL-сертификатах читайте в Справочном центре.

11. Когда SSL-сертификат станет активным, заходим в панель хостинга Timeweb через файловый менеджер:

  • Заходим к себе на сайт.
  • Создаем новую папку для бота.
  • Загружаем два файла.

12. Установим вебхук для нашего бота в Viber. Заходим в браузер и запускаем файл set_webhook.php. Если все хорошо, выдается следующее сообщение (см. ниже). Если у вас не получилось установить вебхук, внимательно проверьте URL-адрес (соблюдение регистра букв) или корректность PHP-файла.

13. Заходим в Viber на смартфоне. Последовательно нажимаем в меню: Еще –> Паблик аккаунты –> HelloBot.

Если паблик-аккаунт скрыт, нажимаем «Показать».

Проверяем результат

В паблик-аккаунте нажимаем кнопку «Сообщение» и начинаем взаимодействие с ботом. Пишем любую фразу, бот должен нам ответить тем же. Если бот отказывается отвечать, проверьте корректность PHP-файла, наличие SSL-сертификата и пр.

Нами был успешно создан и запущен чат-бот для Viber. Теперь можно подумать о расширении его функционала. Документацию Viber REST API можно прочитать на официальном сайте мессенджера.

Здесь мы рассмотрели создание бота на PHP. Бота под Viber можно создать также на Python и Node.JS.

Илья +5

Для отправки сообщений Вам понадобятся:

  • учетная запись devino.online;
  • согласованное имя отправителя;
  • API Key для авторизации.

Отправка¶

Для отправки SMS-сообщения используйте вызов POST /viber/messages

Запрос¶

Тело запроса¶

Параметр Тип данных Описание и допустимые значения
from string Имя отправителя
to string Номер телефона в международном формате
text(optional) string Текст сообщения, до 1000 символов
image(optional) string URL на изображение в форматах JPG, JPEG или PNG
action(optional) string URL или deep-link, который откроется по нажатию на кнопку
caption(optional) string Текст кнопки, не более 30 UTF-8 символов
validity(optional) integer Срок жизни сообщения в секундах, по умолчанию сутки
priority(optional) priority Приоритет отправки сообщения
scheduledTime(optional) string Время по UTC, в которое необходимо отправить сообщениеФормат: YYYY-MM-DD hh:mm:ss
callbackUrl(optional) string URL, на который будет отправлено уведомление об изменении статуса сообщения. Валидный URL со схемой http или https
options(optional) object Валидный JSON, который будет передан в уведомлении об изменении статуса

Помимо этого для каждого сообщения из запроса применяются следующие проверки:

validityСрок жизни сообщения в секундах
Минимальное значение: 15 Максимальное значение: 1209600, 14 дней По умолчанию: 86400, 1 сутки
priorityПриоритет отправки сообщения

LOW и MEDIUM – низкий и средний приоритеты, по умолчанию LOW. Обычно используются для отправки рекламы.

HIGH – рекомендуем использовать такой приоритет для сообщений, использующих шаблоны.

REALTIME – максимально возможный приоритет. Используйте его, когда отвечаете на входящее сообщение от пользователя.

При использовании любого другого значения сообщение будет отклонено.

Возможные комбинации текста, кнопок и картинок¶

Не смотря на то, что параметры text, action, caption и image в описании являются необязательными, необходимо указать хотя бы один или несколько в соответствии со следующим списком возможных комбинаций:

  • text
  • image
  • text, action, caption
  • text, action, caption, image

Ответ¶

Параметр Тип данных Описание и допустимые значения
code string
reasons(optional) Array[String, String] Массив ошибок, произошедших во время обработки сообщения Указывается только при code=REJECTED
reasons.key string Код ошибки
reasons.ref string Ссылка на параметр, в котором произошла ошибка
messageId(optional) string Идентификатор сообщенияУказывается только при code=OK

Примеры запросов¶

<label>Текст</label>

curl -X POST   -H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ=='   -H 'Content-Type: application/json'   -d '{      "messages": [         {             "from": "MyCompany",             "to": "79034567890",             "text": "Code: 1234"         }     ]    }' https://api.devino.online/viber/messages 

Ответ

{   "result": [     {        "code": "OK",        "messageId": "3482512350952730368"     }   ] } 

<label>Текст с изображением и кнопкой</label>

curl -X POST   -H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ=='   -H 'Content-Type: application/json'   -d '{      "messages": [         {             "from": "MyCompany",             "to": "79034567890",             "text": "Code: 1234",             "image": "https://cdn.mycompany.com/viber.png",             "action": "https://mycompany.com/promo?code=1234",             "caption": "Activate!"         }     ]    }' https://api.devino.online/viber/messages 

Ответ

{   "result": [     {        "code": "OK",        "messageId": "3482512350952730368"     }   ] } 

Webhooks¶

Входящие уведомления¶

Как подключить

Для получения входящих Viber-сообщений от пользователей свяжитесь с менеджером компании или обратиться в техническую поддержку, сообщив URL веб-сервера обработки входящих уведомлений.

Пример запроса

{   "incomingMessageId": "3777714415805253122",   "to": "MyCompany",   "from": "79101111111",   "text": "Входящее сообщение",   "ts": "1587721283000" } 

Параметры

Параметр Тип данных Описание
incomingMessageId string Индификатор сообщения
to string Адрес получателя
from string Адрес отправителя
text string Текст сообщения
ts string Timestamp с миллисекундами получения сообщения

Уведомления об изменении статусов¶

При формировании статуса сообщения будет отправлен POST-запрос на URL, указанный при отправке сообщения в параметре callbackUrl. В ответ на запрос ожидается 200 OK.

В случае, если на запрос вернётся 500 Internal Error, то будут предприниматься попытки доставки статуса 5 раз с интервалом в минуту.

<label>Delivered</label>

[   {     "messageId": "3597958273915257088",     "ts": 1613411223173,     "status": "DELIVERED",     "errorCode": 0   } ] 

<label>Clicked</label>

[   {     "messageId": "3597958273915257088",     "ts": 1613411436590,     "status": "CLICKED",     "errorCode": 0,     "ip": "127.0.0.1",     "browser": "Chrome 8",     "os": "Windows 10",     "userAgent": "WINDOWS_10-CHROME8"   } ] 

<label>Rejected</label>

[   {     "messageId": "3597958273915257088",     "ts": 1613411223173,     "status": "REJECTED",     "errorCode": 2012   } ] 

Параметры

Параметр Тип данных Статус Описание и Допустимые значения
messageId long any Уникальный идентификатор сообщения на платформе
ts int any Указывает на время создания объекта status
status enum any Код статуса доставки Viber сообщенияПодробнее см. раздел Возможные статусы
errorCode(optional) int Причина, по которой сообщение не было доставлено
ip(optional) string IP-адрес пользователя
browser(optional) string Браузер пользователя
os(optional) string Операционная система пользователя
userAgent(optional) string any Заголовок User-Agent

Возможные статусы¶

Параметр Описание
SCHEDULED Сообщение было отложено
ENROUTE Сообщение находится в очереди на отправку
SENT Было отправлено в сеть поставщика
DELIVERED Сообщение доставлено абоненту
EXPIRED Сообщение было просрочено по сроку жизни
SEEN Сообщение было прочитано
CLICKED Был переход по ссылке из сообщения
UNDELIVERABLE Сообщение невозможно доставить, причина в коде ошибки
REJECTED Сообщение было отклонено Viber или Devino
DELETED Сообщение было удалено из очереди на отправку
UNKNOWN Произошла неизвестная ошибка
SUBSCRIBED Пользователь подписался
UNSUBSCRIBED Пользователь отписался

Популярный мессенджер Вайбер имеет множество функциональных возможностей. Viber API помогает решать, продвигать бизнес-задачи. Для запуска публичной рассылки требуется условие – компания должна быть продвинутой и успешной в деловой сфере. В этой статье рассмотрим Вайбер АПИ, и как эта система работает.

Что такое viber api?

API в Вибере представляет собой набор инструментов для программирования, который расширяет список функций мессенджера. Разработчики сервиса предоставляют несколько полезных опций:

1. Создание Вайбер-бота на основе PHP, предназначенного для продвижения своих услуг и продукции, при помощи массовой отправки сообщений.

2. Загрузка набора с личными стикерами.

3. Разработка оригинальных приложений для Вайбера.

4. При помощи Viber Service messages Api можно отправлять сервисные сообщения различного вида.

5. Отслеживание реакции получателя на массовую рассылку информации.

6. Возможность ведения public-чатов собственных услуг и товаров.

Пользователи на сервисе Viber API могут передать информацию не только абонентам в Вибер, но и партнерам компании.

Важно! Для грамотного использования встроенной функцией в Вайбер потребуется овладеть языком программирования.

Документация по апи

АПИ предоставляет интерфейс для автоматической отправки быстрых SMS в Вайбере посредством специальной докуметации:

· аккаунта Active Viber (учетная запись поддерживается автоматически в роли администратора);

· Active Public Account Bot;

· универсального токена для аутентификации учетной записи пользователя;

· настройки учетной документации Webhook.

Подробнее получить информацию по документации АПИ можно на следующем источнике: https://developers.viber.com/docs/api/rest-bot-api/

Что такое шлюз для вайбера и какие есть предложения на рынке

Шлюзом для Вайбера называют собственное АПИ, которое будет подключаться к своей платформе или потенциальных клиентов. Шлюз действует на основе java. Шлюз в обязательном порядке должен поддерживать синхронизацию с разными поставщиками, чтобы можно было свободно редактировать конфигурационные файлы. Консоль в данном случае не требуется.

Чтобы создать шлюз, необходимо придерживаться нескольких строгих требований:

· изучить документацию по АПИ Вибер;

· реализовать интернет-протокол и API;

· осуществлять логирование и журналирование (файлы отправляются на sftp);

· протестировать;

· установить.

На современном рынке пользователям предлагаются различные программные шлюзы дл Вибера, которые подключаются по протоколам SIP и VOIP. Внешний шлюз для СМС в Вайбере позволяет осуществлять отправку сообщений.

Внимание! Для использования рассылки в Viber обязательно внесение минимального платежного взноса.

Услуга TurboSMS открывает возможность рассылки сообщений клиентам до 1000 символов с картинкой и Ста-кнопкой.

PHPAPI Sandbox

В ноябре 2016 года Viber внедрил публичные аккаунты (Viber public account, или просто PA). С их выходом стало доступно и api, которое позволяет:

  • вести переписку с пользователем
  • проверять статус подписчиков (онлайн, оффлайн)
  • получить информацию о конкретном подписчике
  • вносить записи (посты) на свою страницу

Все это позволяет создать довольно неплохого бота, или же интегрировать бота в уже существующий проект, что вполне может улучшить качество взаимодействие с пользователями. Если вы уже создавали ботов для telegram или slack — то создать бота для Viber не составит большого труда.

Вступление

Еще некоторое время назад у меня появилась необходимость взаимодействовать с пользователями вайбера. Хотелось бы внедрить в свое приложение типовые диалоги с пользователями, а еще предоставлять “кнопочные диалоги” (в тех случаях когда пользователь видит несколько кнопок под чатом). Но на тот момент открытого (публичного) API для этого не было, и приходилось либо отказываться либо изворачиваться с граблями.

С релизом публичных аккаунтов (PA) ситуация изменилась, теперь мы можем создать более полноценное взаимодействие с “кнопочными диалогами” и нужными нам “конверсиями”. Все это здорово, если не одно НО — нет SDK для PHP (ради справедливости, есть sdk для nodejs и python). Именно этот пробел я решил заполнить, и описать как можно создать простого бота на php, и за одно создать SDK.

Первые шаги

Прежде чем создавать бота, необходимо получить доступ к аккаунту специального типа. Возможно это покажется вам странным, но на момент написания поста это так. Для этого необходимо перейти на https://www.viber.com/en/public-accounts и заполнить нужную форму:

В форме вы указываете телефон, к которому будет выдан доступ к публичным аккаунтам, и спустя некоторое время вы получите сообщения формата “…You now have early access to Public Accounts!…”. После чего вам необходимо перезапустить Viber-клиент и пройти следующие шаги:

  1. Открыть раздел “Публичные аккаунты” (иконка вверху справа — )

  2. Нажать на “создать аккаунт” (иконка внизу справа — )

  3. Заполнить данные для вашего бота (необходима фоновая картинка, указанная категория, имя, описание и прочее)

На последнем шаге будет доступен выбор способа работы с сообщениями, выберите “api” и скопируйте ключ. (или его можно просто посмотреть на экране “редактирования информации” PA):

Для примера, мой ключ будет: 1111111111111111-2222222222222222-3333333333333333

Серверная часть

Для разработки бота и работы с Viber-API я использую небольшой SDK: https://github.com/Bogdaan/viber-bot-php. Он позволит опустить некоторые подробности взаимодействия c REST-api и построить некоторую логику нашего бота. Установим его:

composer require bogdaan/viber-bot-php

Для начала нам необходимо зарегистрировать адрес вебхука — тот адрес по которому бекенд вибера будет доставлять нам сообщения от пользователей и некоторые другие события. Веб сервер, на котором будет расположен бот (и соотвественно вебхук) обязательно должен работать по https с корректным SSL сертификатом. Самоподписанный сертификат тут не подойдет, если его нет — попробуйте использовать letsencrypt.org.

Для примера, мой вебхук будет: https://viber.hcbogdan.com/bot.php. Создадим файл setup.php:

 require_once("../vendor/autoload.php"); use ViberClient; $apiKey = '1111111111111111-2222222222222222-3333333333333333'; // <- PLACE-YOU-API-KEY-HERE $webhookUrl = 'https://viber.hcbogdan.com/bot.php'; // <- PLACE-YOU-HTTPS-URL try {     $client = new Client([ 'token' => $apiKey ]);     $result = $client->setWebhook($webhookUrl);     echo "Success!n"; } catch (Exception $e) {     echo "Error: ". $e->getError() ."n"; }

И зарегистрируем вебхук выполнив файл:

$ php setup.php Success!

Теперь, когда пользователь отправит сообщение, или зайдет в чат, по адресу вебхука будут отправлены запросы. Создадим файл bot.php:

  require_once("../vendor/autoload.php");  use ViberBot; use ViberApiSender;  $apiKey = '';  // так будет выглядеть наш бот (имя и аватар - можно менять) $botSender = new Sender([     'name' => 'Whois bot',     'avatar' => 'https://developers.viber.com/img/favicon.ico', ]);  try {     $bot = new Bot(['token' => $apiKey]);     $bot     ->onConversation(function ($event) use ($bot, $botSender) {         // это событие будет вызвано, как только пользователь перейдет в чат         // вы можете отправить "привествие", но не можете посылать более сообщений         return (new ViberApiMessageText())             ->setSender($botSender)             ->setText("Can i help you?");     })     ->onText('|whois .*|si', function ($event) use ($bot, $botSender) {         // это событие будет вызвано если пользователь пошлет сообщение          // которое совпадет с регулярным выражением         $bot->getClient()->sendMessage(             (new ViberApiMessageText())             ->setSender($botSender)             ->setReceiver($event->getSender()->getId())             ->setText("I do not know )")         );     })     ->run(); } catch (Exception $e) {     // todo - log exceptions }

Далее остается разместить файл bot.php так, чтобы он был доступен по https://viber.hcbogdan.com/bot.php, и перейти в чат с ботом из вибер клиента. Если вы не видите ответов бота, то стоит проверить ваш error_log и access_log на предмет наличия ошибок.

Можно немного улучшить функционал бота и добавить логгирование. Сделаем это с помощью monolog:

composer require monolog/monolog

И добавим логгирование исключений:

 //... } catch (Exception $e) {     // log exceptions      $log = new MonologLogger('bot');      $log->pushHandler(new MonologHandlerStreamHandler('/tmp/bot.log'));      $log->warning('Exception: '. $e->getMessage()); }

Все исключения будут поступать в /tmp/bot.log.

Базовая версия вашего бота готова, вы можете вносить свою логику, добавлять кнопки в чат, использовать глубокие ссылки (deep link) и html разметку — все это доступно в SDK. Я создал несколько демок которые вы можете увидеть в чате viber://pa?chatURI=viber-bot-php&context=habrahabr. Если у вас еще нет viber клиента, вы можете найти чат по этой ссылке: viber-bot-php.

Полезные ссылки

Практически любой современный мессенджер или социальная сеть имеют свой API. Не исключением стал и Viber. Если говорить коротко, то Viber API – это инструменты и программная среда для разработчиков, которые пишут всевозможные приложения для Вайбера, рисуют стикеры и работают над расширением функциональных возможностей мессенджера.viber-api.png

Простому пользователю все Viber API вряд ли может пригодиться, а вот тем, кто заинтересован, например, в использовании Viber как коммерческой платформы для продвижения своих продуктов, — это как раз то, что надо.

Впрочем, Viber API является закрытым, а не открытым. И для того, чтобы получить доступ к нему, потребуется для начала стать действительно продвинутой компанией в своем сегменте рынка. Далеко не всем подряд разработчики выдают доступ к API.

Но те, кому это все-таки удалось, начинают в полной мере использовать все преимущества Viber API, ведь Вайбер в настоящее время стал настоящим гигантом на рынке ПО. Это не удивительно, если учесть все его богатые возможности:

  • отправка и получение текстовых сообщений;
  • возможность организации коллективных чатов;
  • бесплатные видео звонки, а также платные на телефоны вне сервиса Viber;
  • и еще многое-многое другое.

Назначение Viber API для разработчиков

В целом, Viber API предназначен для того, чтобы:

  • отправлять сервисные сообщения;
  • делиться с информацией с остальными пользователями и партнерами;
  • отслеживать реакцию пользователей и потенциальных покупателей на сервисные сообщения;
  • создавать публичный чат для компании;
  • делать стикеры и всевозможные приложения.

При этом, как ни странно, в договоре Viber API строго прописано, что не должно ни в сообщениях, ни в приложениях присутствовать какой-либо рекламы.

Используемые источники:

  • https://timeweb.com/ru/community/articles/kak-sozdat-chat-bota-dlya-viber-1
  • https://docs.devino.online/ru/http/viber/
  • https://viber-fan.ru/viber-api/
  • https://m.habr.com/post/321246/
  • https://viberok.ru/viber-api.html

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий