How to send message to Viber bot with Python?

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, пользователю, который не подписан на чат, разрешается написать только одно сообщение в целях исключения спама.

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

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

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

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

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

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

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

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

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

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

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

Скачать робот бот для Вайбера для проведения торгов или презентаций можно на ресурсах интернета:

  • botmother.com;
  • infostart.ru.

Представители компаний используют 2 способа общения с потенциальными клиентами:

  1. Способ. Паблик-чат: пользователь может написать ответ, рекомендации.
  2. Способ. Паблик-аккаунт: ресурс компании в приложении, на страницах которого администрация выкладывает полезную информацию.

Боты предлагаются разработчиками разные: интеллектуальные (с обучением), которые могут отвечать на сложные вопросы, простые эмуляторы, отвечающие за одну поставленную задачу.

Полезность ботов для бизнеса в Вайбере

Viber bot для бизнеса выполняет рутинную работу, а именно:

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

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

  Два Viber на один телефон — как установить

Как создать бота в Вайбере?

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

Создаем робота в мессенджере:

  1. Надо зарегистрировать в Вайбере аккаунт управления, первичная регистрация.
  2. Создать бота для общения, получить токен.
  3. Токен можно применять для подключения бота на сторонних ресурсах, для интеграции его в социальные сети.

Создаем, управляющий аккаунт:

  • на смартфоне устанавливаем мессенджер;

  • переходим по ссылке: , жмем «Create an account»;

  • в строке «Country»
    должна быть выбрана Russia;
  • добавляем свой телефон в строку «Phone number»,
    жмем «Next»
    (Далее);

  • принимаем обратное сообщение с кодом, вводим его в окошко, жмем «Next»
    ;
  • записываем рабочий электронный почтовый адрес;
  • заполняем поле пароль, необходим для входа в аккаунт управления, желательно записать его;
  • принимаем отметкой соглашение об использовании аккаунта, жмем «Next»
    .

Viber bot

Когда пользователь нажимает кнопку «Далее» (Next), он автоматически переходит в аккаунт, первичная регистрация пройдена, теперь создаем Viber bot:

  • нажимаем кнопку «Create Bot Account»
    , появится форма регистрации робота;
  Как настроить Viber на Samsung — инструкция новичку

  • далее указываем «Account Image»
    , какое графическое изображение будет иметь бот, выбрать надо 400х400 пикселей;

  • выбрать другое изображение можно нажав «Select Image»
    ;
  • указываем в поле «Account Name»
    , имя бота, которое будут видеть пользователи;
  • в строке «Uri»
    заполняется автоматически идентификатор;
  • из списка в строке «Category»
    выбираем тематику созданного аккаунта;
  • поле «Subcategory»
    , просит конкретизировать тему работы для бота;
  • далее устанавливаем язык общения «Language»
    ;
  • в строке «Account Description»
    , делаем кратко описание аккаунта;
  • следующую строку можно пропустить или заполнить «Website Address»
    , если есть сторонний ресурс пользователя;
  • строка «Email Address»
    , вводим электронную почту, автоматически соглашаясь на рассылки от Вайбера;

  • указываем географическое нахождение в строке «Location», достаточно указать город, определение происходит автоматически;
  • в случае распространения информации, не предназначенной для детской аудитории, отмечаем поле («The account contains adult content»);
  • принимаем условия (I accept the Terms and Conditions);
  • проверяем заполнение всех строк, жмем «Create»;
  • Бот создан.

Посмотреть всю информацию о боте можно в «Info».

Вывод

Перед тем, как привязать webhook, надо подумать, какие дополнительные события нужны будут нашему боту, и добавить их в наш запрос. Это могут быть следующие события:

Обязательные события, например, ”message”, придут в любом случае, на них специально подписываться не надо.

1. Ссылка сверху — одинаковая для всех ботов, есть в документации Viber. 2. Ваш токен

Во вкладке Body
вставляем ссылку на бота.

Если мы сделали всё правильно (а так оно и есть) — получаем статус-сообщение ОК.

В случае, если вы не пользуетесь Postman, а пишете код в PHP, привязка webhook будет выглядеть так:

Теперь сообщения, которые будут приходить на вашего бота, будут попадать на этот webhook в виде JSON объектов.

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

Теперь пропишем функцию отправки сообщения в Viber
— обычный POST запрос.

После того как пользователь откроет диалог с нашим ботом в Viber — наш бот получит JSON с информацией о пользователе и типом события conversation_started.

Что с ним пока нельзя делать — это создать глубокую ссылку на него (с использованием URI аккаунта, как мы писали выше) и найти его во вкладке с ботами Viber (discover screen) – ни среди ботов, представленных в подборках, ни при помощи поиска. Для того, чтобы ваше детище появилось там, нужно получить эппрув от Viber, заполнив «форму публикации бота» (есть в документации). У Viber целая куча предрассудков
требований, которым бот должен удовлетворять для утверждения и публикации, включая «уникальную ценность» и хотя бы минимальное понимание свободного ввода пользователя. Подробнее о публикации бота расскажем в будущем.

Авторы статьи:

Роман Брязгалов, php-разработчик, специалист по диалоговым системам Singularika

Валерия Маляренко, копирайтер Singularika

class=»post_content» itemprop=»articleBody»> —>

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации