Лого vc.ru

Алгоритм создания бота для Facebook Messenger

Алгоритм создания бота для Facebook Messenger

Директор по digital-маркетингу биомедицинского холдинга «Атлас» и ментор рубрики Growth Hacks Виктор Бабичев написал для vc.ru колонку об алгоритме создания бота для мессенджера Facebook.

Поделиться
Директор по digital-маркетингу медицинского центра «Атлас» Виктор Бабичев

Для того, чтобы создать бота для мессенджера 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 git@github.com: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, но ни одним не пользуюсь постоянно. Как вы думаете, дело в том, что для людей это еще «ново», или на самом деле они никому не будут нужны?

Присылайте собственные кейсы, в результате которых вам удалось заметно улучшить (или, наоборот, ухудшить) показатели проекта, на what@growthhacks.ru. Интересные эксперименты обязательно попадут на страницы рубрики Growth Hacks.

Статьи по теме
Где учиться программисту: 19 онлайн-курсов29 сентября 2014, 18:14
Популярные статьи
Показать еще
Комментарии отсортированы
как обычно по времени по популярности

Довольно просто. И хорошо.

Годно, ждем подобное про бота в телеграм

0

один из примеров для телеграма, когда вообще ничего писать не надо -https://habrahabr.ru/post/269819/
если писать, то кода очень мало, огромный плюс, что не надо отдельную процедуру одобрения проходить

полезно, спасибо!

0

"Зарегистрироваться"

Можно воспользоваться hook.io и не заморачиваться с деплоем, как минимум (пример создания бота для Телеграма unnikked.ga/build-telegram-bot-hook-io)

0

Часто бота по шаблону не хватает и нужна настройка руками.
Вот тут и нужна помощь в разработке бота.
Сейчас делаем такси и заказ еды. Кому надо похожее - пишите в скайп Alive2059

0

нужно написать бота, который напишет бота

да, и только node.js ?а как же php ?

0

на РНР тоже можно - буквально сразу либа для рнр появилась
github.com/pimax/fb-messenger-php

На РНР я создал часов за 5 с перекурами и кофе - но к сожелению он не заапрувлений

www.facebook.com/photo.php?fbid=10154831992014126&set=a.10150450592494126.456395.800799125&type=3&theater

Чат ботам сто лет в обед. То что внезапно до неандертальцев дошло что можно же ботов врубить и заработать, ничего не говорит для конечного пользователя.
К примеру в ФБ, бот это по сути как живой человек, тоесть вы должны создать с ним чат и общаться. А не так что он будет перехвватывать ваше общение и делать необходимые вам фишки(что как раз и надо). В итоге в ФБ бот это полное УГ и пользы от него 0. Так как это не более чем криворукий интерфейс к каким то сервисам. По сути консоль. А вы правда думаете что рядовой юзер будет юзать консоль?)

Но конечно же сейчас появиться 100500 стартапов которые делают ботов, где главный велью всего проекта это то что это бот. Как собственно было и с мессенджерами.

надо было пол года назад франшизу на ботов организовать. лайкбот или как-то так

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

Спс за комменты для тлг.

0

А есть тема готовых шаблонов ? Для русских. Накидайте плиз.

0

Не интересно. Цукерман не платит 25k

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

Сейчас обсуждают
Yus Teryukalov

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

«В кризис банк никто не купил, пришлось развивать самому»
0
Philip Salnikov

Суммы инвестиций и заработков тоже удивляют. Кому нужны любительские фото в таких количествах?

«Я потратил $10 млн и два года на то, что мог выяснить за 4 недели»: основатель Twenty20 об ошибках проекта
0
Sakari Sauso

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

«Азбука вкуса» и бывшая «Афиша-Еда» запустили сервис для доставки ингредиентов по рецептам журнала
0
Sakari Sauso

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

«Азбука вкуса» и бывшая «Афиша-Еда» запустили сервис для доставки ингредиентов по рецептам журнала
0
John Smith

А Саванна?

Компания «Альянс» показала на бутылках своего сидра героев знаменитых картин в состоянии опьянения
0
Показать еще