? Viber API

Viber API

В ноябре 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'; //  $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 на предмет наличия ошибок.

Как настроить своими руками Фейсбук, Анроид, Windows Phone, Flickr или сотни других приложений и гаджетов?

Можно немного улучшить функционал бота и добавить логгирование. Сделаем это с помощью 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.

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

241

112.7k


241

Library to develop a bot for the Viber platform. Create you first Viber bot step by step, see demo at viber://pa?chatURI=viber-bot-php&context=github.com

composer require bogdaan/viber-bot-php 
require_once
("
../vendor/autoload.php"

);
use
ViberBot
;
use
ViberApiSender
;
$apiKey
=
'
'

;
//
 reply name

$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
) {
//
 this event fires if user open chat, you can return "welcome message"

//
 to user, but you can't send more messages!

return
 (new
ViberApiMessage
Text
())
->
setSender($botSender
)
->
setText("
Can i help you?"

);
    })
->
onText('
|whois .*|si'

, function
 ($event
) use
 ($bot
, $botSender
) {
//
 match by template, for example "whois Bogdaan"

$bot
->
getClient()->
sendMessage(
            (new
ViberApiMessage
Text
())
->
setSender($botSender
)
->
setReceiver($event
->
getSender()->
getId())
->
setText("
I do not know )"

)
        );
    })
->
run();
} catch
 (Exception
$e
) {
//
 todo - log exceptions

}

See more in examples
directory.

. ├── Api │   ├── Entity.php                │   ├── Event                     # all remote events ("callbacks") │   │   ├── Conversation.php      # fires when user open 1v1 chat │   │   ├── Delivered.php         # fires when message delivered (for each device) │   │   ├── Factory.php           # Event factory │   │   ├── Failed.php            # fires when delivery failed (for each device) │   │   ├── Message.php           # fires when user send message │   │   ├── Seen.php              # fires when user read message (for each device) │   │   ├── Subscribed.php        # fires when user subscribe to PA │   │   ├── Type.php              # available types │   │   └── Unsubscribed.php      # fires when user unsubscribed │   ├── Event.php                 # base class for all events │   ├── Exception                 # │   │   └── ApiException.php      # remote or logic error │   ├── Keyboard                  # │   │   └── Button.php            # all types of buttons here │   ├── Keyboard.php              # button container │   ├── Message                   # │   │   ├── CarouselContent.php   # │   │   ├── Contact.php           # │   │   ├── Factory.php           # │   │   ├── File.php              # │   │   ├── Location.php          # │   │   ├── Picture.php           # │   │   ├── Sticker.php           # │   │   ├── Text.php              # │   │   ├── Type.php              # available message types │   │   ├── Url.php               # │   │   └── Video.php             # │   ├── Message.php               # base class for all messages │   ├── Response.php              # wrap api response │   ├── Sender.php                # represent bot-sender │   ├── Signature.php             # signature helper (verify or create sign) │   ├── User                      # │   │   └── State.php             # user state (online/offline etc) │   └── User.php                  # viber user ├── Bot                           # │   └── Manager.php               # manage bot closures ├── Bot.php                       # bot class └── Client.php                    # api client 
  • all api entities
  • validate request and response signs
  • provide webhook interface
  • provide event interface
  • wrap all api response to entities
  • validate api entities before submit?
  • implement log levels with monolog?
  • post on public page
Хищники (фильм, 2010)

Pull requests are welcome.

7 min read

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

Рабочее окружение

Для разработки нам понадобится сервер с nginx или apache2. В качестве языка разработки выбран PHP, который не имеет официальной библиотеки для работы с Viber API. Но товарищ Bogdaan предоставил свой SDK viber-bot-php, которым мы и воспользуемся. 

Для других языков официальный сайт предоставляет следующие SDK:

Как основу для сервера, используем Ubuntu Server 16.04 с установленным на нем apache2 и PHP7. Устанавливать SDK будем через composer. За основу бота выбран любимый автором Kohana framework.

Библиотека viber-bot-php требует версию PHP 5.5.0 или выше. Также, Viber API требует, чтобы у домена, на котором будет функционировать чат-бот, был установлен сертификат безопасности, например бесплатный Let’s Encrypt. Самоподписанные сертификаты не подойдут. 

Заявка на чат

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

Главные праздники мусульман и памятные даты Ислама

Заполняем поля информацией, на основе которой будет приниматься решение об одобрении заявки.

Уделите внимание полноте и корректности данных для большей вероятности одобрения вашей заявки.

Отправляем заявку и ждем от нескольких часов, до нескольких дней.

В случае одобрения заявки, вы увидите что-то вроде этого:

Ура! Нам одобрили заявку. Теперь у нас есть возможность создать публичный чат, на основе которого будет создан чат-бот.

Осталось дело за малым. Для разработки бота необходим ключ приложения, который находится в информации публичного аккаунта. Приступим к его созданию.

Перезапускаем приложение, жмем справа наверху на иконку

и далее на 

Попадаем в форму создания публичного чата. Нас интересует APP KEY. Он используется в боте для авторизации на серверах Viber и подтверждения, что мы прошли проверку. Выглядит он примерно так:

4577b...f2988d-7d00d...734b6-1c2b98...bb2e

С подготовкой к разработке мы успешно справились. Теперь дело за малым: написать бота. Итак, приступим.

Разработка

Как уже говорилось ранее, автор будет вести разработку на основе фреймворка Kohana, в частности версии 3.3.6. После распаковки файлов в рабочую директорию, структура проекта выглядит следующим образом:

С помощью composer установим viber-bot-php библиотеку:

cd path/to/www composer require bogdaan/viber-bot-php

Полдела сделано. Теперь поговорим о структуре бота.

Структура бота

Основными составляющими бота являются два URL. Один для настройки (другими словами регистрации в Viber) бота, второй для обработки поступающих пользовательских команд в чате.

Первый URL уведомляет сервера Viber о том, куда слать вводимые пользователем данные. Второй URL обрабатывает те самые присланные команды.

Создадим контроллер Viber с двумя экшенами: setup и bot.

webhookUrl = 'https:///'; $this->token = ''; $this->name = ''; $this->avatar = 'https:///path/to/avatar.png'; public function action_setup() { $this->webhookUrl .= 'viber/bot'; try { $client = new Client([ 'token' => $this->token ]); $result = $client->setWebhook($this->webhookUrl); echo 'Success!'; } catch (Exception $e) { echo $e->getMessage(); } } public function action_bot() { $botSender = new Sender([ 'name' => $this->name, 'avatar' => $this->avatar, ]); try { $bot = new Bot(['token' => $this->token]); $bot->onSubscribe(function ($event) use ($bot, $botSender) { // Пользователь подписался на чат $receiverId = $event->getSender()->getId(); $bot->getClient()->sendMessage( (new ViberApiMessageText()) ->setSender($botSender) ->setReceiver($receiverId) ->setText('Thank you for subscribe!'); ); }) ->onConversation(function ($event) use ($bot, $botSender) { // Пользователь вошел в чат // Разрешается написать только одно сообщение $receiverId = $event->getSender()->getId(); $bot->getClient()->sendMessage( (new ViberApiMessageText()) ->setSender($botSender) ->setReceiver($receiverId) ->setText('Welcome!'); ); }) ->onText('|Hello|si', function ($event) use ($bot, $botSender) { // Напечатали 'Hello' $receiverId = $event->getSender()->getId(); $user = $event->getSender()->getName(); $answer = 'Hello, ' . $user; $bot->getClient()->sendMessage( (new ViberApiMessageText()) ->setSender($botSender) ->setReceiver($receiverId) ->setText($answer); ); }) ->run(); } catch (Exception $e) { Log::instance()->add(Log::ERROR, $e->getMessage()); } } }

Настроим бота. Перейдем в браузере по адресу https://viber/setup
. Если мы видим“Success!”, то бот настроен, можно переходить к следующему пункту.

Теперь все данные от клиента будут отправляться на адрес https://viber/bot
, где находится наш обработчик событий. Перейдем в сам чат.

Кстати, html-ссылка перехода в чат выглядит следующим образом: 

Link to chat

Если все настроено верно, мы увидим приветствие:

Мы видим, как сработал метод onConversation. По правилам Viber, пользователю, который не подписан на чат, разрешается написать только одно сообщение в целях исключения спама.

Как разархивировать чат в Whatsapp: пошаговая инструкция

Хорошо, а что произойдет, если мы подпишемся на чат? Давайте попробуем.

Метод onSubscribe срабатывает при подписке пользователя на чат. С того момента, как это событие произошло, мы можем за раз слать несколько сообщений.

Давайте поздороваемся с нашим ботом: введем “Hello”. 

Сработал метод onText, который проверяет присланный пользователем текст по регулярному выражению.

Мы рассмотрели основные методы обработки событий в боте и только один способ ответа бота пользователю — текстовый. Помимо него, есть еще:

  • стикеры
  • кнопки
  • ссылки

О данных типах сообщений мы поговорим в следующих статьях.

    Читайте далее

    Мы рассказываем об интересных технологиях и делимся опытом их использования.

    Получаем бесплатный SSL сертификат от Let’s Encrypt
    Atom editor
    Создаем бота для Viber

Популярный мессенджер Вайбер имеет множество функциональных возможностей. 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 символов с картинкой и Ста-кнопкой.

Загрузка ...
It-Blog | SEO-INTERNET-HARDWARE-SOFT
Adblock
detector