- Viber бот как сделать
- Создание бота в сервисе Viber
- Создание каркаса бота на Python
- Создание http-сервера
- Установим веб-хуку
- Использование ngrok для локальной разработки
- Пример работы
- Как создать Viber-бота с помощью PHP
- Вступление
- Первые шаги
- Серверная часть
- Создание полноценного Viberbot. Часть вторая — первый контакт или «сonversation_started»
- Отправка первого сообщения пользователю — приветствуем и подписываем
- Сформируем ссылки на бота
- Приветствия botviber или «event»: «conversation_started»
Viber бот как сделать
Боты для социальных сетей и мессенджеров в последние годы все больше и больше набирают популярность. Мобильные приложения для большинства популярных социальных сетей есть почти у каждого в смарфоне, что облегчает использование ботов.
Существует два типа ботов:
- сложные, которые могут самообучаться, вести диалог, как человек;
- специализированные боты для выполнения конкретных задач. Например, узнать где в данный момент находится ваша посылка, посмотреть актуальные скидки в магазине, узнать историю автомобиля по vin-номеру и многие другие. Кроме того, бот может сам автоматически оповещать о статусе вашей посылке, о появлении новых акций в магазине и о многом другом. И поэтому, многие компании разработали своих ботов, с помощью которых они могут оказывать услуги более удобным и быстрым способом.
Рассмотрим создание бота для получения списка вакансий нашей компании. Для работы с ботом будем использовать кнопки ответов, чтобы упростить взаимодействие с ботом.
Работу начнем с изучения официальной документации Viber, она находится тут:
В компании Viber позаботились о разработчиках, которые захотят создать новых viber-ботов, и создали для популярных языков программирования уже готовые библиотеки, в которые инкапсулированы сложные операции по работе с сервисом Viber, что значительно упрощает разработку ботов.
В данный момент имеются библиотеки для Python и Node.JS.
Для разработки будем использовать язык программирования Python3.
Процесс создания бота разделим на несколько шагов:
- Создание бота в сервисе Viber.
- Создание каркаса бота на Python.
- Настройка бота под конкретные сообщения.
- Использование ngrok для локальной разработки.
- Пример работы.
Создание бота в сервисе Viber
Для это требуется перейти по ссылке: https://partners.viber.com/account/create-bot-account и заполнить все необходимые поля формы. После успешного заполнения данных, будет создан бот и автоматически сгенерируется токен (обязательно сохраните его — он будет использоваться для аутентификации).
Создание каркаса бота на Python
Установим библиотеку для бота от viber:
Версия python для этой библиотеки должна быть выше 2.7.
В качестве фреймворка для python возьмем легковесный Flask:
Создадим и сконфигурируем нашего бота:
Создадим каркас для обработки сообщений пользователя:
Для каждого сообщения пользователя выполняется проверка на подлинность с помощью токена. Также определяется тип сообщения пользователя:
- простое сообщение пользователя;
- запрос на подписку;
- ошибка в запросе.
В зависимости от типа сообщения система реагирует.
В нашем примере пользователю, в ответ на его сообщение, отправляется то же самое сообщение.
Создание http-сервера
Для работы бота ваш http-сервер обязательно должен быть защищен ssl-шифрованием.
Так выглядит запуск сервиса у меня:
Обращаю внимание, что это только ознакомительный пример и бота я запускал на локальном компьютере, поэтому не заполнил данные для ssl. Имеется возможность указать ssl-сертификат через параметр ssl_context.
Установим веб-хуку
После того, как сервер запущен, нужно указать сервису Viber куда ему нужно посылать сообщения пользователей для бота. Можно сделать разными способами.
Первый — через python:
Второй — отправить запрос на установку веб-хука вручную; например, используя программу Postman.
где X-Viber-Auth-Token – токен, полученный ранее.
В переменной event_types мы можем указать на какие типы событий наш бот будет реагировать.
После этого бот уже будет рабочим и вы сможете отправлять сообщения через приложение viber, а он будет вам отвечать.
Настройка бота под конкретные сообщения
Сначала немного теории. Как я уже писал выше, я не считаю нужным нагружать пользователей набором сообщений для работы с ботом, поэтому было решено использовать keyboard. По сути — это hotkeys для определенных сообщений, выполненных в виде кнопок. Пример, как это выглядит, можно найти чуть ниже.
Например, у нас должна быть кнопка поиска вакансий, для этого добавим следующий код:
Если нужно добавить несколько кнопок, то их нужно перечислить в списке Buttons.
Область для кнопок имеет сетку в 6 колонок. В параметрах кнопки указаны следующие характеристики:
- она будет занимать 6 колонок и 1 строку;
- иметь определенный цвет фона;
- какой вид действия используется при нажатии;
- задано сообщение, которое будет посылаться на сервер при нажатии;
- задан тип сообщения;
- указан заголовок кнопки.
Так как в ActionBody указывается сообщение, которое будет отправлено на сервер при нажатии пользователем соответствующей кнопки, я решил использовать ActionBody для определения типа ответа от пользователя и самого ответа. Для этого использовал такую структуру:
ActionBody: action_type|value или просто action_type.
Также хочу отметить, что нам необходимо запоминать ответы, которые дает пользователь. Это можно сделать несколькими способами. Я решил эти данные сохранять в параметр сообщения tracking_data.
Это поле может содержать только строковые значения, поэтому сохраним данные в json, а передавать их пользователю будем через параметр tracking_data в виде строки, путем преобразования json.dumps() и обратно через json.loads().
Вот пример работы с сообщениями пользователя:
В вышеприведенном фрагменте кода происходит следующее: определяется тип отправленного сообщения пользователем, к примеру ‘search_vacancies‘ — значит запустить процедуру выбора параметров для поиска вакансий; следующим шагом нужно показать выбор страны в виде кнопок и таким же способом далее выбирается профиль и опыт, как только все параметры выбраны, то посылается запрос на сервер и результаты с вакансиями отображаются ботом.
Также, хочется отметить, что Бот может отправлять следующие сообщения:
- Обычное текстовое – TextMessage(text=’some text’).
- Сообщение-ссылка – URLMessage(media=’http://mysite.com’).
- Контактное сообщение – ContactMessage(contact=contact), где contact объект вида Contact c параметрами name, phone_number, avatar.
- Сообщение-картинка – PictureMessage(media=’http://picture.url.com’).
- Видео сообщение – VideoMessage(media=’http://video.url.com’, size=1234).
- Сообщение о местоположении – LocationMessage(location=location), где location – объект вида Location с указанием координат широты и долготы.
- Стикер – StickerMessage(sticker_id=123), где sticker_id это ид конкретного стикера.
- Файл – FileMessage(media=’http://path/to/file’, size=123, file_name=’file name’).
- Сложное медиа-сообщение – RichMediaMessage(rich_media=json_object), более подробно можно посмотреть в документации, можно вывести несколько объектов вида: картинку с текстом и ссылкой, таким образом организовать некую «карусель» объектов.
- Hotkeys для пользователя – KeyboardMessage – это такие кнопки которые мы делали для ответа пользователям.
Использование ngrok для локальной разработки
Как я отмечал выше, чтобы ваш сервис работал с Viber, он должен быть запущен через ssl (самоподписанные сертификаты работать не будут, нужен хотя бы let’s encrypt).
У меня не было задачи размещать сервис с ботом на каком-либо сервере, я ограничился только локальной разработкой, но мне нужно было, чтобы мой сервис был доступен извне, для этого я взял замечательную утилиту ngrok.
Установка ее очень простая: достаточно посетить сайт https://ngrok.com/.
С помощью нее вы можете пробросить свой локальный порт наружу даже с защищенным туннелем. Мой сервис локально был развернут на 8443 порту, поэтому я запустил ngrok cо следующими параметрами:
После это получаем такую информацию:
Тут видно что по адресу https://4c4b93d5.ngrok.io доступен мой сервис с ботом.
Этот адрес сервера нужно отправлять при установке хука инициализации бота.
Пример работы
После нажатия кнопки (Поиск вакансий):
После выбора страны (Россия):
После выбора профиля деятельности (Разработка):
После указания опыта работы(Неважно) получаем такие результаты:
По нашему запросу нашлась одна вакансия.
К сожалению, мы самостоятельно не можем добавить нашего бота в общий список всех доступных ботов и даже не можем дать на него прямую ссылку, а все потому, что у компании Viber строгие требования к чат-ботам и нужно обращаться в компанию Viber с просьбой о подтверждении (судя по статьям в интернете, такое подтверждение удается получить только крупным компаниям).
Полный код бота доступен по адресу:
python, viber
Источник
Как создать Viber-бота с помощью PHP
В ноябре 2016 года Viber внедрил публичные аккаунты (Viber public account, или просто PA). С их выходом стало доступно и api, которое позволяет:
- вести переписку с пользователем
- проверять статус подписчиков (онлайн, оффлайн)
- получить информацию о конкретном подписчике
- вносить записи (посты) на свою страницу
Все это позволяет создать довольно неплохого бота, или же интегрировать бота в уже существующий проект, что вполне может улучшить качество взаимодействие с пользователями. Если вы уже создавали ботов для telegram или slack — то создать бота для Viber не составит большого труда.
Вступление
Еще некоторое время назад у меня появилась необходимость взаимодействовать с пользователями вайбера. Хотелось бы внедрить в свое приложение типовые диалоги с пользователями, а еще предоставлять «кнопочные диалоги» (в тех случаях когда пользователь видит несколько кнопок под чатом). Но на тот момент открытого (публичного) API для этого не было, и приходилось либо отказываться либо изворачиваться с граблями.
С релизом публичных аккаунтов (PA) ситуация изменилась, теперь мы можем создать более полноценное взаимодействие с «кнопочными диалогами» и нужными нам «конверсиями». Все это здорово, если не одно НО — нет SDK для PHP (ради справедливости, есть sdk для nodejs и python). Именно этот пробел я решил заполнить, и описать как можно создать простого бота на php, и за одно создать SDK.
Первые шаги
В форме вы указываете телефон, к которому будет выдан доступ к публичным аккаунтам, и спустя некоторое время вы получите сообщения формата «. You now have early access to Public Accounts. «. После чего вам необходимо перезапустить Viber-клиент и пройти следующие шаги:
Открыть раздел «Публичные аккаунты» (иконка вверху справа — )
Нажать на «создать аккаунт» (иконка внизу справа — )
На последнем шаге будет доступен выбор способа работы с сообщениями, выберите «api» и скопируйте ключ. (или его можно просто посмотреть на экране «редактирования информации» PA):
Для примера, мой ключ будет: 1111111111111111-2222222222222222-3333333333333333
Серверная часть
Для разработки бота и работы с Viber-API я использую небольшой SDK: https://github.com/Bogdaan/viber-bot-php. Он позволит опустить некоторые подробности взаимодействия c REST-api и построить некоторую логику нашего бота. Установим его:
Для начала нам необходимо зарегистрировать адрес вебхука — тот адрес по которому бекенд вибера будет доставлять нам сообщения от пользователей и некоторые другие события. Веб сервер, на котором будет расположен бот (и соотвественно вебхук) обязательно должен работать по https с корректным SSL сертификатом. Самоподписанный сертификат тут не подойдет, если его нет — попробуйте использовать letsencrypt.org.
Для примера, мой вебхук будет: https://viber.hcbogdan.com/bot.php . Создадим файл setup.php :
И зарегистрируем вебхук выполнив файл:
Теперь, когда пользователь отправит сообщение, или зайдет в чат, по адресу вебхука будут отправлены запросы. Создадим файл bot.php :
Далее остается разместить файл bot.php так, чтобы он был доступен по https://viber.hcbogdan.com/bot.php , и перейти в чат с ботом из вибер клиента. Если вы не видите ответов бота, то стоит проверить ваш error_log и access_log на предмет наличия ошибок.
Можно немного улучшить функционал бота и добавить логгирование. Сделаем это с помощью monolog:
Источник
Создание полноценного Viberbot. Часть вторая — первый контакт или «сonversation_started»
Отправка первого сообщения пользователю — приветствуем и подписываем
В первой части мы научились запускать стартер устанавливать webhook для нашего проекта botviber.
В этой 2-й мы научимся отправлять первое сообщение показываемое для наших пользователей, создавать ссылки для поиска и запуска нашего бота как внутри ViberURL так и NoViberURL
Сформируем ссылки на бота
1) Oффлайн QR — его можно скачать из партнерской админки viber
2) Ссылка для месcенджера и передачи по мессенджеру ViberURL
3) Ссылка редирект NoViberURL в интернете много таких сократителей URL — но все они похожи на спам, поэтому рекомендую создать свой код из трех строк PHP и положить файл себе на хостинг, вот содержимое файла foot.php
Приветствия botviber или «event»: «conversation_started»
После открытия QR или перехода по ссылке на адрес нашего приложения от серверов Viber (Jetty) прилетают POST запросы с событием («event»: «conversation_started») а их полное содержимое имеет следующий вид:
И, прошу заметить, что в телеге chat_id один по всей сети мессенджера во всех всех ботах — как мобильный номер, а у вайбер id — он как токен и уникален в пределах одного вашего бота. В другом боте ваш id станет другим…
Обработаем их и ответим, чтобы получить один из трех ответов как на скрине выше
а) type=«text»
б) а тут мы видим классический случай type=«rich_media»
в) на третьем скрине Type=«keyboard»
Детальнее на viber REST API, а ниже рассмотрим как получить первый вариант
Как мы уже видим botviber можно забрендировать под любой бизнес либо мини магазинчик, также подогнать стили под ваш основной сайт
1) для обработки пользовательских сообщений в файле проекта myviberbot/views.py внесем изменения:
Перезапустим наш проект Django.
К сожалению «Rakuten Viber» никому не дает официальные страницы на PA и сообщество, исключения крупные бренды и публичные личности, поэтому для SEO продвижения и PR по соцсетям и др. рекомендую создать минилендинг — мелкая страница на которую переходят все с основного сайта или др. ресурсов вот образец:
Удачного запуска botviber.
В следующей статье мы разберем event[«message»], для обработки пользовательских сообщений, вы узнаете, что сделать чтоб вести диалог, как отделять следующие сообщения, вообще как botviber научить понимать, что это следующие.
(Создание полноценного Viberbot на Django 2 и Viber REST API. Часть третья — Message)
Источник