Создание бота для Facebook Messenger
Директор по digital-маркетингу медицинского центра «Атлас» Виктор Бабичев написал для vc.ru колонку об алгоритме создания бота для мессенджера Facebook.
Для того, чтобы создать бота для мессенджера Facebook, необходимо обладать минимальными знаниями и навыками в программировании. На самом деле, все идет к тому, что боты будут создаваться в пару кликов, однако до этого еще далеко. Уже начинают появляться проекты, которые сильно упрощают разработку ботов, но чаще всего они решают далеко не все задачи. Поэтому давайте разберемся в вопрос, и напишем своего простого бота для мессенджера Facebook.
Подготовка
Начать нужно с окружения. Необходимо:
- Открыть Terminal (консоль для ввода команд).
- Установить git.
- Зарегестрироваться на Heroku и указать, что дефолтный проект - Node.js.
- Установить Node.js и npm.
- Открыть удобный текстовый редактор.
- Прочитать документацию Facebook.
- Разобрать код и понять, что там за что отвечает.
- Обновить знания в программировании, если нужно.
Начало
Сначала стоит определиться, что мы хотим написать. Наша задача - создать простого бота в Facebook, который будет автоматически отвечать на сообщения пользователя. Цель - разобраться, как все устроено.
Нам нужна группа для теста. Пока структура такова, что бот в Facebook - это отдельная страница. То есть если вы хотите добавить бот к уже существующей группе, то вам нужно обрабатывать ситуацию, когда пользователь хочет написать администратору, а не общаться с ботом. Пример: страница издания CNN.
Создаем новое приложение, где указываем, что это App for Pages:
Заходим во вкладку Messenger, выбираем нужную группу, авторизуемся и записываем полученный токен. Он нам еще понадобится.
WebHooks
Теперь нужно настроить WebHooks - это адрес сайта, на который будут отсылаться ответы пользователя в режиме реального времени. Приложение должно обрабатывать запросы и отдавать результат. Сайт должен быть доступен по HTTPS, а верефицирующий токен должен совпадать с настройками в приложении.
Создадим такой сайт и пройдем процедуру верификации. Для этого придется чуть-чуть попрограммировать.
Для удобства, мы выбрали платформу Node.js, так как примеры в Facebook Messenger Platform находятся там.
Выполните последовательность шагов:
- Скачать проект с Github с примером бота: $ git clone [email protected]:babi4/vctest.git $ cd vctest.
- Вставить в index.js свои pageToken - мы его запоминали ранее. verifyToken - придумайте любую фразу.
- Запустить проект: $ npm install $ npm start.
- Если все получилось, то по адресу http://localhost:5000/ будет доступен сайт.
Чтобы верефицировать адрес в WebHooks, нужно опубликовать сайт на публичном хостинге. Самый простой способ предлагает Heroku.
- Устанавливаем https://toolbelt.heroku.com/.
- Регистрируемся в аккаунте: $ heroku login.
- Заходим в директорию проекта vctest и подготавливаем проект для деплоя: $ cd vctest $ heroku create.
- Запоминаем адрес сайта.
- Деплоим сайт (размещаем его на хостинге): $ git push heroku master.
- Поздравляем, наш cайт готов: https://floating-dusk-67986.herokuapp.com/ Осталось подключить его настройках приложения в Facebook.
Настраиваем WebHooks в приложении: добавляем к сгенеренному адресу сайта /webhook. В Verify Token вставляем фразу, которую придумали немного ранее и записали в код:
Если все удалось, получится вот так:
Чтобы все заработало, нужно создать подписку с группы - тогда все новые сообщения от пользователя начнут моментально обрабатываться. Нужно выполнить команду в терминале: $curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps...", куда вставить сгенеренный токен, который мы запоминали в начале материала.
Подписка оформлена, теперь бот начал работать.
Последний штрих: настроиваем Welcome screen. Это сообщение появляется, когда пользователь инициализировал общение с ботом.
Вставляем свои токены и ID паблика в welcome.sh и выполняем: $ bash welcome.sh.
Публикация бота
Все созданные боты должны проходить процедуру проверки на соответствия правилам Facebook. Только после одобрения соцсети пользователи смогут общаться с созданным ботом, поэтому нашу программу можно будет протестировать, только если выполнить все шаги из материла.
Послесловие
Мне нравится идея ботов в мессенджерах - я уже опробовал уже десятки из них в Telegram, но ни одним не пользуюсь постоянно. Как вы думаете, дело в том, что для людей это еще «ново», или на самом деле они никому не будут нужны?