Как написать бота для вайбер

Привет vc.ru! Меня зовут Боровков Евгений и я предприниматель. В этой статье мы полностью разберемся в вопросе работы с Viber для бизнеса. Чат-боты, верификация бренда, рассылки и лайфхаки. Весь опыт нашей работы с мессенджером.

Ух какая реклама Viber

Предисловие

Несмотря на то, что вокруг только и разговоры, что о Telegram ботах, о web-ботах и холодных рассылках, я хочу затронуть тему разработки бота именно под Viber. К нам периодически приходят запросы на разработку таких ботов, поэтому я решил сэкономить всем время и набросать простую инструкцию для всех, кто хочет себе такого бота. Поехали!

Почему Viber

Вопреки расхожему мнению, Viber все еще не умер. Даже на территории РФ. Да, Telegram набирает обороты и очень активно вытесняет другие мессенджеры. Но окончательно одержать победу и забрать себе ВСЮ аудиторию у него пока не получается.

Viber по-прежнему используют люди старше 40. По крайней мере так было в 2021 году. Статистики за 2022 я не нашел. Я считаю, что Viber используют люди, которые:

  • Часто звонят в другие страны или живут на несколько стран. Например, граждане Израиля, где Viber очень популярен. Приезжая в РФ, они продолжают сидеть в мессенджере. Хотя-бы для того, чтобы общаться с родными дома.
  • Для которых Telegram слишком сложно, а в WhatsApp нет никого из друзей. Да, Дуров ориентируется в основном на молодежь. А Цукерберг на метавселенные. Но не будем о грустном.
  • Сидят там по инерции.

Кстати поиграться и сделать прикольных ботов для Viber, по аналогии с Telegram, скорее всего не выйдет. Лично я таких не встречал. Если вы таких находили, то поделитесь ссылками в комментариях!

Каковы бы ни были причины сидеть в Viber — аудитория у мессенджера огромная. Зачем нам эта информация? Чтобы было легче ответить себе на вопрос “а зачем мне бот для VIber?”.

Ну и Viber не уходил Российского рынка. И его не запрещали. Rakuten (компания владелец Viber) даже выполнила требование о приземлении в РФ. Ссылка на новость.

Первый шаг в создании бота для Viber

Прежде чем садиться писать код, нам понадобится вот эта ссылка: https://partners.viber.com/login . Без авторизации в этом самом месте у нас не запустится даже тестовый бот на тестовом контуре.

По этой ссылке нам нужно не просто авторизоваться, а еще и заполнить поля: Имя аккаунта (на самом деле имя бота), URI (юзернейм бота), картинку. Механизм напоминает BotFather в Telegram. Но только чуть сложнее, потому что надо переходить в эту веб-админку. Но зато там есть русский язык.

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

Что важно понять на этом этапе:

  • Смски с подтверждением приходят через раз. Я не знаю с чем это связано, но эта ситуация не меняется уже несколько лет. Если это читают представители Viber, то будет классно получить комментарий от вас.
  • Наш бот, в терминологии Viber, носит название “паблик аккаунт”. С этим предлагаю просто смириться.

Кстати, кроме окна авторизации в админке, есть еще вот такая страничка. Вроде как она призвана продать вам идею создания бота именно в Viber.

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

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

Я думаю, что они пошли на шаг создания таких локальных партнеров, потому что появились конструкторы ботов. За последние несколько лет, рынок чат-ботов так трансформировался, что клиенты перестали приходить напрямую в Rakuten. Теперь клиент приходит или к агентствам (коим мы и являемся уже 4 года), или идет в конструктор.

Техническая сторона создания бота в Viber

Завели аккаунт, дошли до шага с токеном — отлично! Теперь давайте разберемся на чем этого самого бота писать.

В интернете куча библиотек для Python, ссылки на которые я даже не буду прикладывать. Там запуск и апробация простейшего бота займет буквально пять минут (умеючи). Инструкции по настройке веб-хуков вы без проблем найдете на том же хабре.

Мы 4 года писали (и пишем до сих пор) ботов на Java. И поэтому у нас родилась собственная библиотека коннектор к Viber. Кому нужно — напишите или мне в личные сообщения, или на наш канал в Telegram и я скину на нее ссылку.

Какие тонкости есть на этом этапе:

  • Когда вы создали тестового бота, вам надо авторизоваться в Viber на телефоне, зайти в: “Еще → Паблик аккаунты” и увидите своего бота. Он будет скрыт. Нажимаем на него и появляется кнопка “Показать”. С этого момента он станет доступен как-бы публично. Но:
  • Чтобы бот был “Верифицирован” и был доступен в поиске, надо связаться с командой Viber. Видимо они его проверяют каким-то образом. Наверно, как проверял Facebook* (ныне Meta*), пока еще там можно было делать ботов. Хотя, на самом деле, Viber просто сделал этот шаг платным. Бот без оплаты работать будет. Но придется делать на него прямую ссылку и вести пользователя напрямик.
  • Боту нужен хостинг. Этот тезис неочевиден тем, кто ранее ботов не касался, поэтому я об этом скажу. Разработчик может временно поднять бота, чтобы протестировать, на своем ПК, да. Но чтобы запустить бота на постоянной основе, вам нужен будет сервер, где бот будет постоянно работать. Часто такой сервер могут предоставить подрядчики. У нас, например, есть такая услуга.
Как создать чат-бота Viber

С точки зрения возможностей, в Viber достаточно широкий функционал. Можно делать ботов с кнопками и инлайн кнопками. С теми самыми, которых очень не хватает в WhatsApp (да, худо-бедно кнопки завезли, но про это потом). Подробная инструкция про ботов для этого мессенджера у меня уже в работе, поэтому самое время подписаться 🙂

Холодная и теплая рассылка сообщений в Viber

С теплой все понятно: загружаете базу своих клиентов, смотрите у какого процента из них установлен Viber и понеслась. Настраиваем всякие сегменты на своей стороне, а в мессенджер грузим уже готовые списки.

И, кстати, есть бренды, которые и чат-бота сделали и рассылку запускают. Например известный ювелирный бренд, который постоянно закрывается, оседлал этот мессенджер полноценно и шлет хорошие таргет рассылки с кнопками и с быстрой удобной возможностью купить их товары.

С холодной рассылкой все чуть интереснее:

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

Viber не может проверить откуда у вас взялась база с этими получателями. Поэтому вы вроде как можете слать рассылку по холодной базе. Но:

  • У вас при верификации аккаунта появляется галочка. Мол, бренд подтвержден. Если вы “обнаглеете” и будете слать слишком много сообщений тем людям, которые на это не согласны, то легко поймаете страйк и Viber отберет и галочку и возможность рассылки. Ну или партнер отберет.
  • Вы все равно платите за каждую “инициацию диалога”. Условно говоря, каждая новая беседа будет стоить денег. Но если пользователь будет туда отвечать и вы ему тоже что-то отвечать, то уже вот эти ответы будут бесплатными. Почитать полноценно можно тут.
  • Все чаты с брендами лежат в отдельной папке “Бизнес чаты”. Слишком усердно стараться охватить широкую аудиторию скорее всего будет не так эффективно как те же смс или WhatsApp рассылки.

Что еще нужно понимать, при работе с рассылкой:

  • Viber сравнивает свой инструмент в первую очередь с смс рассылками. Мол, у нас тут 1000 символов а в смс всего 70. Да и платите вы за доставленные а не за отправленные сообщения.
  • Эту механику можно хорошо подвязать, например, с CRM. Пришел клиент, купил, а вы ему вдогонку еще одно сообщение, что у него скидка на следующую покупку. Хотя этот “плюс” справедлив по отношению не только к Viber, а в целом к чат-ботам. Тот же WhatsApp тоже так “умеет”.
  • Не у всех действительно есть Viber. Если бренд хочет по-настоящему присутствовать в мессенджерах, то кроме привычного Telegram бота, должен работать с аудиторией еще и в WhatsApp и в Viber и в VK. Хороший пример выстраивания такой “омниканальной коммуникации” это один крупный сайт для поиска работы с красным логотипом. Или логистическая компания с зеленым логотипом.

UPD: 2 сентября обновились условия для чат-ботов. Теперь исходящие сообщения даже у ботов будут платными. Кроме первых 10 000 в месяц. Ссылка на новость.

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

*Meta (ранее Facebook) запрещенная в РФ организация.

Время на прочтение
4 мин

Количество просмотров 143K

В ноябре 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 и заполнить нужную форму:

early access to pa

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

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

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

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

На последнем шаге будет доступен выбор способа работы с сообщениями, выберите «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:

<?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:

<?php

require_once("../vendor/autoload.php");

use ViberBot;
use ViberApiSender;

$apiKey = '<PLACE-YOU-API-KEY-HERE>';

// так будет выглядеть наш бот (имя и аватар - можно менять)
$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

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

<?php
//...
} 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.

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

  • SDK для php
  • Еще один пример viber бота
  • Документация по REST-api

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

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

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

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

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

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

Создадим самого простого чат-бота для 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

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

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.

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

Содержание:

  • Что такое чат-бот для Viber и зачем он нужен
  • Кому будет полезен бот для Viber
  • Преимущества чат-ботов в Viber
  • Какие бизнес-задачи решает чат-бот в Viber
  • Где еще можно создавать чат-боты
  • Как создать чат-бота для Viber
  • Как сделать чат-бот для Viber эффективным
  • Заключение

Что такое чат-бот для Viber и зачем он нужен

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

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

Кому будет полезен бот для Viber

Если вы продаете товары и услуги через этот мессенджер, ведете каналы или управляете сообществами, чат-бот упростит процессы коммуникации с аудиторией. Бот быстрее обрабатывает запросы пользователей о продуктах, возвратах, отвечает на вопросы, делает напоминания и помогает собирать обратную связь.

Чат-бот не сможет решать абсолютно все вопросы, связанные с ведением бизнеса, но способен существенно снизить нагрузку на персонал, особенно при наличии большого потока клиентов.

Преимущества чат-ботов в Viber

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

Быстрые ответы в режиме 24/7

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

Экономия на оплате труда

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

Автоматические рассылки

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

Какие бизнес-задачи решает чат-бот в Viber

Чат-бот справится со множеством функций — рассмотрим их далее.

Ответы на частые вопросы

Если вы регулярно получаете одинаковые вопросы о продуктах, ценах, сроках выполнения и доставки, расположении шоурумов и тому подобное, поручите ответы Viber чат-боту. Настройте ответы по триггерам или сделайте меню с кнопками вопросов.

Внедрение Viber чат-бота для ответов на частые запросы
Внедрение Viber чат-бота для ответов на частые запросы

Частичная автоматизация воронки продаж

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

Бот мероприятия рассказывает о фестивале и предлагает купить билеты
Бот мероприятия рассказывает о фестивале и предлагает купить билеты

Напоминания

Если вы устраиваете мероприятия, проводите консультации или отправляете сотрудников для осуществления замеров, клиентам нужно делать напоминания. Эту функцию можно переложить на Viber чат-бот.

Получение фидбека

С помощью чат-бота удобно проводить опросы и собирать обратную связь. Это необходимо, чтобы улучшать качество продукта и сервиса, а бот позволяет сделать это максимально легко.

Вовлечение подписчиков

Делайте рассылки с полезной информацией через чат-бот для Viber, добавляйте в меню разделы с развлекательным контентом.

Бот развлекает подписчиков необычными гороскопами
Бот развлекает подписчиков необычными гороскопами

Создавайте квизы, за прохождение которых подписчики получают лид-магнит — электронную книгу или промокод на скидку. Это добавит очков вашей репутации и поможет увеличить продажи.

Информационные и маркетинговые рассылки

Через бот удобно информировать клиентов о новинках и изменениях, рассказывать о скидках и выгодных предложениях.

Если нужно рассказать об акциях, чат-бот в Viber это сделает
Если нужно рассказать об акциях, чат-бот в Viber это сделает

Сохранение данных

С помощью бота можно собирать данные, которые вводят подписчики, и отправлять в CRM-систему.

Получение данных из внешних источников

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

Где еще можно создавать чат-боты

Чат-боты можно создавать в любом мессенджере, где вы общаетесь с клиентами и подписчиками, чтобы автоматизировать этот процесс.

На базе конструктора SendPulse вы можете делать чат-боты для Telegram, Instagram, Facebook и WhatsApp. В каждом из этих мессенджеров и соцсетей огромная платежеспособная аудитория, которая проводит много времени онлайн — воспользуйтесь этим. Подключите все боты, чтобы каждый клиент и подписчик мог выбрать удобный канал для взаимодействия с вами.

Чат-боты SendPulse отвечают на вопросы пользователей, помогают вовлекать подписчиков, участвуют в воронке продаж и принимают оплату. С их помощью легко настраивать таргетированные рассылки и делать напоминания, собирать обратную связь и сохранять пользовательские данные. Инстаграм-боты также могут реагировать на отметку в сторис и отвечать на комментарии к публикациям и прямым эфирам.

В конструкторе чат-ботов SendPulse вы можете создавать автоматизированные цепочки сообщений, которые запускаются по установленным триггерам. Например, пропишите команду на слово «цена», и на сообщение с таким словом бот отправит соответствующий ответ.

Добавление триггера
Добавление триггера

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

В редакторе доступно семь блоков для построения сценария бота: «Сообщение», «Цепочка», «Действие», «Фильтр», «Запрос API», «Пауза» и «Случайный». Чтобы применить блок, нужно перетащить его из меню слева в рабочую область.

В сообщение чат-бота в Instagram можно добавить такие элементы:

  • текст;
  • эмодзи;
  • изображение;
  • кнопка;
  • карточка;
  • переменные;
  • ввод пользовательских данных;
  • быстрые ответы.

В WhatsApp кроме этих элементов можно также прикрепить файл. Возможность добавить карточку товара появляется, если настроен каталог с товарами в Facebook Commerce Manager.

Дополнительные элементы в Facebook: аудио, видео, задержка и файл. В Telegram доступны все указанные элементы, кроме карточки — в этом мессенджере они не предусмотрены.

В сообщении можно разместить кнопку с оплатой. Для этого необходимо подключить в настройках аккаунта одну из платежных систем: Stripe, Fondy, PayPal, Mercado Pago, LiqPay, Wayforpay.

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

Блок «Цепочка» позволяет перевести пользователя из текущей цепочки сообщений в другую.

Можно разветвлять сценарий и запускать разные цепочки, не перегружая структуру бота
Можно разветвлять сценарий и запускать разные цепочки, не перегружая структуру бота

С помощью блока «Действие» можно:

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

С помощью блока «Фильтр» легко сегментировать подписчиков по персональным данным и действиям в боте, а также создавать квизы.

Пример фильтрации по времени срабатывания
Пример фильтрации по времени срабатывания

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

Запрос API
Запрос API

Блок «Пауза» позволяет добавить задержку между элементами цепочки на указанное время или до конкретной даты. Это полезно, если нужно дать клиенту время на раздумья, или когда предполагается прохождение обучающей программы в боте в определенном темпе.

Блок «Случайный выбор» используется для проведения квизов и маркетинговых исследований.

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

Рекомендуем к прочтению:

  • «Чат-боты в Facebook Messenger для бизнеса: как начать их использовать прямо сейчас»;
  • «Как легко создать бота в Telegram для своего бизнеса»;
  • «Как создать чат-бота в Инстаграм для бизнеса»;
  • «Что такое WhatsApp бот, чем он полезен и как его создать — полный пошаговый гайд».

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

Прежде всего определите целевую аудиторию бота и в соответствии с этим продумайте tone of voice. В некоторых случаях уместно дружеское обращение, в других — только деловой стиль. «Нарисуйте» портреты клиентов, чтобы лучше их понимать.

Продумайте структуру чат-бота. Она зависит от потребностей ЦА и от того, каких целей вы хотите добиться. Берите за основу вопросы, которые ваши клиенты чаще всего задают менеджерам. Поставьте себя на место аудитории: какие функции бота будут вам полезны? Можно устроить опрос и узнать напрямую у подписчиков, что им хочется в нем видеть.

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

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

Откроется панель управления. Выберите Create Bot Account и заполните поля с информацией об аккаунте. Примите условия использования и нажмите Create. Создается паблик-аккаунт, и автоматически генерируется токен аутентификации.

Подключение чат-бота для Viber
Подключение чат-бота для Viber

Далее есть два варианта: использовать конструктор чат-ботов или создать бот самостоятельно на PHP, Python, Node.JS — потребуется сервер с доменом и SSL-сертификатом. Документацию можно прочитать в разделе для разработчиков на официальном сайте.

Как сделать чат-бот для Viber эффективным

Собрали для вас несколько советов о том, как повысить эффективность чат-бота.

Проанализируйте готовых ботов

Изучите чужих ботов перед тем, как создать своего. Многие хотят сделать что-то уникальное, но то, что действительно нужно вашему чат-боту, скорее всего, уже придумали и воплотили другие. Не изобретайте велосипед.

Протестируйте несколько ботов, необязательно из своей тематики. Подсмотрите крутые фишки и интересные идеи, а также учтите чужие ошибки, если заметите их.

Изучите удачные примеры ботов
Изучите удачные примеры ботов

Определите цели бота

Не стоит создавать чат-бот просто потому, что все так делают — у него должна быть конкретная цель. Не нужно дублировать все те функции, которые пользователь может выполнить на сайте или в приложении. Подумайте, какие действия удобнее совершать с помощью бота, и сосредоточьтесь на этом.

Думайте о пользе

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

Подготовьте качественное оформление и приветствие

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

Привлекающая внимание картинка для чат-бота в Вайбер
Привлекающая внимание картинка, лаконичное описание и ссылка на сайт с подробной информацией

Не перегружайте чат-бот

Продумайте структуру бота и не добавляйте ничего лишнего, чтобы он был максимально простым и удобным в использовании. Например, не стоит запрашивать email, если эти данные не обязательны для корректной работы — это отсеет часть подписчиков.

Оживите бота

Придайте боту человечности: добавьте эмоций в ответы, используйте эмодзи. Можно «научить» его шутить, если это уместно. Помните, что стиль чат-бота должен соответствовать tone of voice компании. Если на сайте и в соцсетях все строго и чинно, будет странно, если бот вдруг станет посылать сердечки или юморить.

Персонализируйте сообщения

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

Тестируйте

Перед запуском обязательно убедитесь, что все работает как надо. Можно провести бета-тестирование на несколько десятков человек. Это позволит понять, как люди взаимодействуют с чат-ботом, все ли понятно, соответствует ли бот ожиданиям аудитории и нет ли в нем ошибок.

Анализируйте действия пользователей

Чтобы повысить эффективность чат-бота, анализируйте поведение пользователей. Если подписчики «отваливаются», важно понять, на каком этапе, почему это происходит и как решать проблему.

Советуем ознакомиться:

  • «Пишем текст для чат-бота: особенности и советы»;
  • «Примеры чат-ботов: удачные решения, которые можно использовать в бизнесе»;
  • «Как SendPulse создавал своего чат-бота. Делимся лайфхаками и советами».

Заключение

Мы разобрали, как создать чат-бота для Viber и какие задачи он способен решать.

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

Рекомендуем также попробовать рассылки по email и SMS и web push уведомления для создания омниканальной системы коммуникации. Используйте нашу CRM и конструктор сайтов и мультиссылок.

Время чтения: 5 минуты Прочту позже

В этой статье мы полностью разберемся в вопросе работы с Viber для бизнеса. Чат-боты, верификация бренда, холодные и теплые рассылки и лайфхаки. Весь опыт нашей работы с мессенджером.

Чат бот для вайбер

Предисловие

Несмотря на то, что вокруг только и разговоры что о Telegram ботах, о web-ботах и холодных рассылках, мы хотим затронуть тему разработки бота именно под Viber. К нам периодически приходят запросы на разработку таких ботов, поэтому мы решили сэкономить всем время и набросать простую инструкцию для всех, кто хочет себе такого бота. Поехали!

Почему Viber

Вопреки расхожему мнению, Viber все еще не умер. Даже на территории РФ. Да, Telegram набирает обороты и очень активно вытесняет другие мессенджеры. Но окончательно одержать победу и забрать себе ВСЮ аудиторию у него пока не получается.

Viber по-прежнему используют люди старше 40. По крайней мере так было в 2021 году. Статистики за 2022 мы не нашли. Viber используют люди, которые:

  • Часто звонят в другие страны или живут на несколько стран. Например граждане Израиля, где Viber очень популярен. Приезжая в РФ, они продолжают сидеть в мессенджере. Хотя-бы для того, чтобы общаться с родными дома.
  • Для которых Telegram слишком сложно, а в WhatsApp нет никого из друзей. Да, Дуров ориентируется в основном на молодежь. А Цукерберг на метавселенные. Но не будем о грустном.
  • Сидят там по инерции.

Кстати поиграться и сделать прикольных ботов для Viber, по аналогии с Telegram, скорее всего не выйдет. Лично мы таких не встречали. Если вы таких находили, то поделитесь ссылками в комментариях!

Каковы бы ни были причины сидеть в Viber — аудитория у мессенджера огромная. Зачем нам эта информация? Чтобы было легче ответить себе на вопрос “а зачем мне бот для VIber?”.

Ну и Viber не уходил Российского рынка. И его не запрещали. Rakuten (компания владелец Viber) даже выполнила требование о приземлении в РФ. Ссылка на новость.

Первый шаг в создании бота для Viber

Прежде чем садиться писать код, нам понадобится вот эта ссылка: https://partners.viber.com/login . Без авторизации в этом самом месте у нас не запустится даже тестовый бот на тестовом контуре.

По этой ссылке нам нужно не просто авторизоваться, а еще и заполнить поля: Имя аккаунта (на самом деле имя бота), URI (юзернейм бота), картинку. Механизм напоминает BotFather в Telegram. Но только чуть сложнее, потому что надо переходить в эту веб-админку. Но зато там есть русский язык.

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

Что важно понять на этом этапе:

  • Смски с подтверждением приходят через раз. Не понятно с чем это связано, но эта ситуация не меняется уже несколько лет.
  • Наш бот, в терминологии Viber, носит название “паблик аккаунт”. С этим предлагаю просто смириться.

Кстати, кроме окна авторизации в админке, есть еще вот такая страничка. Вроде как она призвана продать вам идею создания бота именно в Viber.

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

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

Есть ощущение, что они пошли на шаг создания таких локальных партнеров, потому что появились конструкторы ботов. За последние несколько лет, рынок чат-ботов так трансформировался, что клиенты перестали приходить напрямую в Rakuten. Теперь клиент приходит или к агентствам (коим мы и являемся уже 4 года), или идет в конструктор.

Техническая сторона создания бота в Viber

Завели аккаунт, дошли до шага с токеном — отлично! Теперь давайте разберемся на чем этого самого бота писать.

В интернете куча библиотек для Python, ссылки на которые даже не будем прикладывать. Там запуск и апробация простейшего бота займет буквально пять минут (умеючи). Инструкции по настройке веб-хуков вы без проблем найдете на том же хабре.

Мы 4 года писали (и пишем до сих пор) ботов на Java. И поэтому у нас родилась собственная библиотека коннектор к Viber. Кому нужно — оставьте заявку, или напишите на наш канал в Telegram и мы пришлем на нее ссылку.

Какие тонкости есть на этом этапе:

  • Когда вы создали тестового бота, вам надо авторизоваться в Viber на телефоне, зайти в: “Еще → Паблик аккаунты” и увидите своего бота. Он будет скрыт. Нажимаем на него и появляется кнопка “Показать”. С этого момента он станет доступен как-бы публично. Но:
  • Чтобы бот был “Верифицирован” и был доступен в поиске, надо связаться с командой Viber. Видимо они его проверяют каким-то образом. Наверно, как проверял Facebook* (ныне Meta*), пока еще там можно было делать ботов. Хотя, на самом деле, Viber просто сделал этот шаг платным. Бот без оплаты работать будет. Но придется делать на него прямую ссылку и вести пользователя напрямик.
  • Боту нужен хостинг. Этот тезис неочевиден тем, кто ранее ботов не касался, поэтому лучше проговорим. Разработчик может временно поднять бота, чтобы протестировать, на своем ПК, да. Но чтобы запустить бота на постоянной основе, вам нужен будет сервер, где бот будет постоянно работать. Часто такой сервер могут предоставить подрядчики. У нас, например, есть такая услуга.

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

Разумеется, вот ссылка на документацию Viber API.

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

Холодная и теплая рассылка сообщений в Viber

Как мы писали в прошлой статье, у Viber есть возможность делать как холодную рассылку, так и теплую. Самостоятельно можно почитать на этой странице.

С теплой все понятно: загружаете базу своих клиентов, смотрите у какого процента из них установлен Viber и понеслась. Настраиваем всякие сегменты на своей стороне, а в мессенджер грузим уже готовые списки.

И, кстати, есть бренды, которые и чат-бота сделали и рассылку запускают. Например известный ювелирный бренд, который постоянно закрывается, оседлал этот мессенджер полноценно и шлет хорошие таргет рассылки с кнопками и с быстрой удобной возможностью купить их товары.

С холодной рассылкой в Viber все чуть интереснее

Такая рассылка может быть очень полезной. Например, чтобы отправлять чеки. Да, те самые кассовые чеки. Многие магазины уже додумались до того, чтобы не заморачиваться с бумагой, а слать вам ссылку на чек прямо в мессенджер. Считаем это максимально удобной фичей, потому что не любим бумажные чеки и считаем, что все должны переходить на ЭДО и прочие электронные форматы взаимодействия, избавляясь от бумаги.

Viber не может проверить откуда у вас взялась база с этими получателями. Поэтому вы вроде как можете слать рассылку по холодной базе. Но:

  • У вас при верификации аккаунта появляется галочка. Мол бренд подтвержден. Если вы “обнаглеете” и будете слать слишком много сообщений тем людям, которые на это не согласны, то легко поймаете страйк и Viber отберет и галочку и возможность рассылки. Ну или партнер отберет.
  • Вы все равно платите за каждую “инициацию диалога”. Условно говоря, каждая новая беседа будет стоить денег. Но если пользователь будет туда отвечать и вы ему тоже что-то отвечать, то уже вот эти ответы будут бесплатными. Почитать полноценно можно тут.
  • Все чаты с брендами лежат в отдельной папке “Бизнес чаты”. Слишком усердно стараться охватить широкую аудиторию скорее всего будет не так эффективно как те же смс или WhatsApp рассылки.

Что еще нужно понимать, при работе с рассылкой:

  • Viber сравнивает свой инструмент в первую очередь с смс рассылками. Мол у нас тут 1000 символов а в смс всего 70. Да и платите вы за доставленные а не за отправленные сообщения.
  • Эту механику можно хорошо подвязать, например, с CRM. Пришел клиент, купил, а вы ему вдогонку еще одно сообщение, что у него скидка на следующую покупку. Хотя этот “плюс” справедлив по отношению не только к Viber, а в целом к чат-ботам. Тот же WhatsApp тоже так “умеет”.
  • Не у всех действительно есть Viber. Если бренд хочет по-настоящему присутствовать в мессенджерах, то кроме привычного Telegram бота, должен работать с аудиторией еще и в WhatsApp и в Viber и в VK. Хороший пример выстраивания такой “омниканальной коммуникации” это один крупный сайт для поиска работы с красным логотипом. Или логистическая компания с зеленым логотипом.

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

*Meta (ранее Facebook) запрещенная в РФ организация.

282

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

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

Для разработки нам понадобится сервер с 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-&gt;token = '';
$this-&gt;name = '';
$this-&gt;avatar = 'https:///path/to/avatar.png';

public function action_setup()
{
$this-&gt;webhookUrl .= 'viber/bot';

try {
$client = new Client([ 'token' =&gt; $this-&gt;token ]);
$result = $client-&gt;setWebhook($this-&gt;webhookUrl);
echo 'Success!';
} catch (Exception $e) {
echo $e-&gt;getMessage();
}
}

public function action_bot() {

$botSender = new Sender([
'name' =&gt; $this-&gt;name,
'avatar' =&gt; $this-&gt;avatar,
]);

try {
$bot = new Bot(['token' =&gt; $this-&gt;token]);
$bot-&gt;onSubscribe(function ($event) use ($bot, $botSender) {
// Пользователь подписался на чат
$receiverId = $event-&gt;getSender()-&gt;getId();
$bot-&gt;getClient()-&gt;sendMessage(
(new ViberApiMessageText())
-&gt;setSender($botSender)
-&gt;setReceiver($receiverId)
-&gt;setText('Thank you for subscribe!');
);
})
-&gt;onConversation(function ($event) use ($bot, $botSender) {
// Пользователь вошел в чат
// Разрешается написать только одно сообщение
$receiverId = $event-&gt;getSender()-&gt;getId();
$bot-&gt;getClient()-&gt;sendMessage(
(new ViberApiMessageText())
-&gt;setSender($botSender)
-&gt;setReceiver($receiverId)
-&gt;setText('Welcome!');
);
})
-&gt;onText('|Hello|si', function ($event) use ($bot, $botSender) {
// Напечатали 'Hello'
$receiverId = $event-&gt;getSender()-&gt;getId();
$user = $event-&gt;getSender()-&gt;getName();
$answer = 'Hello, ' . $user;

$bot-&gt;getClient()-&gt;sendMessage(
(new ViberApiMessageText())
-&gt;setSender($botSender)
-&gt;setReceiver($receiverId)
-&gt;setText($answer);
);
})
-&gt;run();
} catch (Exception $e) {
Log::instance()-&gt;add(Log::ERROR, $e-&gt;getMessage());
}
}
}

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

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

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

Link to chat

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

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

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

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

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

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

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

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

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

Создание бота для Viber

ведущий бэкенд разработчик

09 дек 2019

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

Существует два типа ботов:

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

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

Работу начнем с изучения официальной документации Viber, она находится тут:

https://developers.viber.com/docs/.

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

В данный момент имеются библиотеки для Python и Node.JS.

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

Процесс создания бота разделим на несколько шагов:

  1. Создание бота в сервисе Viber.
  2. Создание каркаса бота на Python.
  3. Настройка бота под конкретные сообщения.
  4. Использование ngrok для локальной разработки.
  5. Пример работы.

Для это требуется перейти по ссылке: https://partners.viber.com/account/create-bot-account и заполнить все необходимые поля формы. После успешного заполнения данных, будет создан бот и автоматически сгенерируется токен (обязательно сохраните его — он будет использоваться для аутентификации).

Создание каркаса бота на Python

Установим библиотеку для бота от viber:

pip install viberbot

Версия python для этой библиотеки должна быть выше 2.7.

В качестве фреймворка для python возьмем легковесный Flask:

pip install Flask

Создадим и сконфигурируем нашего бота:

viber = Api(BotConfiguration(
    name='Smyt Career's Bot',
    avatar='',
    auth_token='your auth token'
))

Создадим каркас для обработки сообщений пользователя:

    if not viber.verify_signature(request.get_data(), request.headers.get('X-Viber-Content-Signature')):

        return Response(status=403)

    # this library supplies a simple way to receive a request object

    viber_request = viber.parse_request(request.get_data())

    if isinstance(viber_request, ViberMessageRequest):
        message = viber_request.message 
        viber.send_messages(viber_request.sender.id, [
            message
        ])

    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.user.id, [
            TextMessage(text="thanks for subscribing!")
        ])

    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn("client failed receiving message. failure: {0}".format(viber_request))

    return Response(status=200)

Для каждого сообщения пользователя выполняется проверка на подлинность с помощью токена. Также определяется тип сообщения пользователя:

  • простое сообщение пользователя;
  • запрос на подписку;
  • ошибка в запросе.

В зависимости от типа сообщения система реагирует.

В нашем примере пользователю, в ответ на его сообщение, отправляется то же самое сообщение.

Создание http-сервера

Для работы бота ваш http-сервер обязательно должен быть защищен ssl-шифрованием.

Так выглядит запуск сервиса у меня:

from flask import Flask, request, Response

app = Flask(__name__)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8443, debug=True)

Обращаю внимание, что это только ознакомительный пример и бота я запускал на локальном компьютере, поэтому не заполнил данные для ssl. Имеется возможность указать ssl-сертификат через параметр ssl_context.

Установим веб-хуку

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

Первый — через python:

viber.set_webhook('https://mybot.com/')

Второй — отправить запрос на установку веб-хука вручную; например, используя программу Postman.

Установим заголовки:

где X-Viber-Auth-Token – токен, полученный ранее.

Текст сообщения:

В переменной event_types мы можем указать на какие типы событий наш бот будет реагировать.

После этого бот уже будет рабочим и вы сможете отправлять сообщения через приложение viber, а он будет вам отвечать.

Настройка бота под конкретные сообщения

Сначала немного теории. Как я уже писал выше, я не считаю нужным нагружать пользователей набором сообщений для работы с ботом, поэтому было решено использовать keyboard. По сути — это hotkeys для определенных сообщений, выполненных в виде кнопок. Пример, как это выглядит, можно найти чуть ниже.

Например, у нас должна быть кнопка поиска вакансий, для этого добавим следующий код:

{
            "DefaultHeight": True,
            "BgColor": "#FFFFFF",
            "Type": "keyboard",
            "Buttons": [
                {
                    "Columns": 6,
                    "Rows": 1,
                    "BgColor": "#e6f5ff",
                    "BgLoop": True,
                    "ActionType": "reply",
                    "ActionBody": "search_vacancies",
                    "ReplyType": "message",
                    "Text": "Поиск вакансий"
                }
            ]
        }

Если нужно добавить несколько кнопок, то их нужно перечислить в списке Buttons.

Область для кнопок имеет сетку в 6 колонок. В параметрах кнопки указаны следующие характеристики:

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

Так как в ActionBody указывается сообщение, которое будет отправлено на сервер при нажатии пользователем соответствующей кнопки, я решил использовать ActionBody для определения типа ответа от пользователя и самого ответа. Для этого использовал такую структуру:

ActionBody: action_type|value или просто action_type.

Рабочие примеры: 

ActionBody: select_country|Russia
ActionBody: search_vacancies
ActionBody: select_level|’’

Также хочу отметить, что нам необходимо запоминать ответы, которые дает пользователь. Это можно сделать несколькими способами. Я решил эти данные сохранять в параметр сообщения tracking_data.

Это поле может содержать только строковые значения, поэтому сохраним данные в json, а передавать их пользователю будем через параметр tracking_data в виде строки, путем преобразования json.dumps() и обратно через json.loads().

Вот пример работы с сообщениями пользователя:

        keyboard = {
            "DefaultHeight": True,
            "BgColor": "#FFFFFF",
            "Type": "keyboard",
            "Buttons": [
                {
                    "Columns": 6,
                    "Rows": 1,
                    "BgColor": "#e6f5ff",
                    "BgLoop": True,
                    "ActionType": "reply",
                    "ActionBody": "search_vacancies",
                    "ReplyType": "message",
                    "Text": "Поиск вакансий"
                }
            ]
        }
        is_finished = False
        buttons = {}

        if text_type == 'search_vacancies':
            tracking_data = {}
            countries = [country[1] for country in COUNTRIES]
            text_message = 'Доступны вакансии в следующих странах: {countries}. Пожалуйста, выберите одну из них.'
                .format(countries=', '.join(countries))
            buttons = get_buttons('select_country', COUNTRIES)

        elif text_type == 'select_country':
            tracking_data['country'] = text[1]
            items = [item[1] for item in PROFILES]
            text_message = 'Доступны вакансии по следующим профилям: {profiles}. Пожалуйста, выберите один из них.'
                .format(profiles=', '.join(items))
            buttons = get_buttons('select_profile', PROFILES)

        elif text_type == 'select_profile':
            tracking_data['profile'] = text[1]
            items = [item[1] for item in LEVELS]
            text_message = 'Укажите пожалуйста какой у вас опыт в этой области: {items}. Пожалуйста, выберите один из них.'
                .format(
                items=', '.join(items))
            buttons = get_buttons('select_level', LEVELS)

        elif text_type == 'select_level':
            is_finished = True
            tracking_data['level'] = text[1]

        else:
            text_message = "Выберите опцию"

        messages = []

        if is_finished:
            response = requests.get(VACANCIES_URL, params=tracking_data)
            json_response = response.json()
            items = json_response.get('results', [])
            for item in items:
                messages.append(URLMessage(media=item.get('url'),
                                           keyboard=keyboard,
                                           tracking_data={}))

            if not messages:
                messages.append(TextMessage(text='Извините, по выбранным критериям, вакансий не найдено.',
                                            keyboard=keyboard,
                                            tracking_data={}))

        else:
            keyboard_buttons = keyboard.get('Buttons', [])
            keyboard_buttons.extend(buttons)
            keyboard['Buttons'] = keyboard_buttons
            keyboard = keyboard if keyboard.get('Buttons') else None
            tracking_data = json.dumps(tracking_data)
            messages.append(TextMessage(text=text_message,
                                        keyboard=keyboard,
                                        tracking_data=tracking_data))

        viber.send_messages(viber_request.sender.id, messages)

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

Также, хочется отметить, что Бот может отправлять следующие сообщения:

  1. Обычное текстовое – TextMessage(text=’some text’).
  2. Сообщение-ссылка – URLMessage(media=’http://mysite.com’).
  3. Контактное сообщение – ContactMessage(contact=contact), где contact объект вида Contact c параметрами name, phone_number, avatar.
  4. Сообщение-картинка – PictureMessage(media=’http://picture.url.com’).
  5. Видео сообщение – VideoMessage(media=’http://video.url.com’, size=1234).
  6. Сообщение о местоположении – LocationMessage(location=location), где location – объект вида Location с указанием координат широты и долготы.
  7. Стикер – StickerMessage(sticker_id=123), где sticker_id это ид конкретного стикера.
  8. Файл – FileMessage(media=’http://path/to/file’, size=123, file_name=’file name’).
  9. Сложное медиа-сообщение – RichMediaMessage(rich_media=json_object), более подробно можно посмотреть в документации, можно вывести несколько объектов вида: картинку с текстом и ссылкой, таким образом организовать некую «карусель» объектов.
  10. Hotkeys для пользователя – KeyboardMessage – это такие кнопки которые мы делали для ответа пользователям.

Использование ngrok для локальной разработки

Как я отмечал выше, чтобы ваш сервис работал с Viber, он должен быть запущен через ssl (самоподписанные сертификаты работать не будут, нужен хотя бы let’s encrypt).

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

Установка ее очень простая: достаточно посетить сайт https://ngrok.com/.

С помощью нее вы можете пробросить свой локальный порт наружу даже с защищенным туннелем. Мой сервис локально был развернут на 8443 порту, поэтому я запустил ngrok cо следующими параметрами:

./ngrok http 8443

После это получаем такую информацию:

Тут видно что по адресу https://4c4b93d5.ngrok.io доступен мой сервис с ботом.

Этот адрес сервера нужно отправлять при установке хука инициализации бота.

Пример работы

После нажатия кнопки (Поиск вакансий):

создать чат-бот смит компания

После выбора страны (Россия):

создать чат-бот smyt компания

После выбора профиля деятельности (Разработка):

создание чат-бота смит компания

После указания опыта работы(Неважно) получаем такие результаты:

создание чат-бота smyt компания

По нашему запросу нашлась одна вакансия.

К сожалению, мы самостоятельно не можем добавить нашего бота в общий список всех доступных ботов и даже не можем дать на него прямую ссылку, а все потому, что у компании Viber строгие требования к чат-ботам и нужно обращаться в компанию Viber с просьбой о подтверждении (судя по статьям в интернете, такое подтверждение удается получить только крупным компаниям).

Полный код бота доступен по адресу:

https://github.com/akapitonov/simple-viber-bot

 

python,

viber

 
Смотреть все посты

Понравилась статья? Поделить с друзьями:
  • Как написать бота для биржи криптовалют
  • Как написать бота для бинарных опционов
  • Как написать бота для бинанс
  • Как написать бота для starcraft 2
  • Как написать бота для binance python