Бот viber на php

Как создать Viber-бота с помощью PHP

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

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

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

Вступление

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

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

Первые шаги

early access to pa

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

  1. Открыть раздел «Публичные аккаунты» (иконка вверху справа — ico)
  2. Нажать на «создать аккаунт» (иконка внизу справа — ico)
  3. Заполнить данные для вашего бота (необходима фоновая картинка, указанная категория, имя, описание и прочее)
Читайте также:  Python ruby groovy scala

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

edit page token

Для примера, мой ключ будет: 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 :

 $apiKey ]); $result = $client->setWebhook($webhookUrl); echo "Success!\n"; > catch (Exception $e) < echo "Error: ". $e->getError() ."\n"; >

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

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

'; // так будет выглядеть наш бот (имя и аватар - можно менять) $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 \Viber\Api\Message\Text()) ->setSender($botSender) ->setText("Can i help you?"); >) ->onText('|whois .*|si', function ($event) use ($bot, $botSender) < // это событие будет вызвано если пользователь пошлет сообщение // которое совпадет с регулярным выражением $bot->getClient()->sendMessage( (new \Viber\Api\Message\Text()) ->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 \Monolog\Logger('bot'); $log->pushHandler(new \Monolog\Handler\StreamHandler('/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.

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

Источник

Как создать чат-бота для Viber

Как создать чат-бота для Viber

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

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

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

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

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

Создаем чат-бота

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

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

Чат-бот Viber

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

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

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

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

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

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

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

partners.viber.com

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

Viber код подтверждения

Вводим код

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

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

Создать бота Вайбер


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

Согласие на создание бота

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

Токен для Viber

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

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

Папка Viberbot

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

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

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

HelloBot

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

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

WEBHOOK_URL


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

SSL Timeweb

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

Загрузка новых файлов на сервер

Viberbot директория

Загружаем файлы

Два файла

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

Вебхук

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

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

Viber

Паблик-аккаунт в Вайбер

Бот Вайбер

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

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

Проверка бота Viber

Бот работает

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

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

Источник

Оцените статью