Создаем бота для мессенджера от Facebook используя Flask и Heroku

Сегодня мы напишем примитивного бота для Facebook, используя Flask и Heroku. Задача бота — отвечать на сообщения, используя рандомную фразу из заданного вами набора.

Что нам будет необходимо для запуска бота?

  • Sublime Text (или любой редактор кода) + терминал
  • Склонировать этот репозиторий: https://github.com/udodihor/flask-fb-bot
  • Бесплатный аккаунт на Heroku и Heroku CLI
  • Аккаунт на Facebook (для доступа к Facebook Developer Center)

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

$ pip install -r requirements.txt

Итак, теперь мы можем запустить Flask-приложение, используя терминал (конечно, всё ещё необходимо находиться в директории проекта):

$ python app.py

Если всё пройдет успешно, мы сможем увидеть URL нашего Flask-приложения. Для того, чтобы проверить его, скопируйте и вставьте, либо просто наберите в адресной строке следующую ссылку: http://localhost:5000

И вы увидите ошибку: недействительный токен проверки.

1.Настройка приложения Facebook

1.1 Создание приложения

Переходим на https://developers.facebook.com/apps Создаем новое приложение с таким именем, которое вам захочется. Далее, когда мы попали на следующую страничку с выбором типа приложения, кликаем «Set Up» на опции с названием «Messenger».

1.2 Генерируем токен для доступа

После выбора приложения, нас переадресует на страницу настроек. Нас интересует создание необходимой страницы на Facebook (приватной, публичной или любой другой), чтобы связать её с ботом.

Теперь, нам нужно сгенерировать токен для нашего приложения и скопировать его в наше приложение, а именно в файл app.py. Находим ACCESS_TOKEN = ‘GENERATED_TOKEN_FROM_FACEBOOK’ и заменяем значение на то, которое только что сгенерировали.

1.3 Создаем токен проверки

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

Выбираем себе строку, которую хотим использовать как токен проверки и присваиваем это значение соответствующей переменной (например, «TESTINGTOKEN» вполне может являться нашим токеном проверки, но лучше использовать что-нибудь посложнее). Затем устанавливаем этот же токен в такое же поле настроек приложения Facebook (конечно, обрубая кавычки).

2.Создаем аккаунт на Heroku

Регистрируемся на Heroku. Это бесплатно.

3.Устанавливаем Heroku CLI

Оправляемся в терминал, выполняем следующую команду:

$ brew tap heroku/brew && brew install heroku

Или скачиваем и устанавливаем автоматически отсюда.

После успешной установки Heroku CLI, мы можем создать наше первое приложение на Heroku!

4.Создание Heroku приложения

Запускаем следующую команду в терминале:

$ heroku login

и нажимаем любую кнопку.

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

$ heroku create

Если всё пошло по плану, мы увидим примерно следующую картину:

Heroku автоматически создаст экземпляр нового приложения на нашем аккаунте. После создания вы увидите git URL к своему приложению (именно там мы и будем разворачивать нашего бота).

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

$ git push heroku master

ВАЖНО: Если вы клонировали репозиторий, всё пройдет хорошо. А если просто скачали файлы с гитхаба, нужно будет инициализировать новый репозиторий и провести первый коммит, а уж потом пушить код на Heroku.

$ git init
$ git add -A && git commit -m "First commit"

После этого, копируем URL нашего веб-приложения Heroku, которое мы предварительно создали. Мы можем проверить его с помощью нашего аккаунта на Heroku (переходим в созданное приложение, и находим кнопку «Open»).

5.Настраиваем вебхуки

В Facebook Developer Center заходим в настройки Messenger’a и добавляем Callback URL в секции вебхуков.

Далее, нам необходимо вставить полученный URL в наше приложение Heroku. В соседнее поле вставляем наш токен проверки, который мы сделали на шаге 1.3.

Если мы сделали всё правильно, Facebook протестирует этот callback и добавит его к приложению. После этого, установим галочки на полях подписки messages, messaging_postbacks, message_deliveries, messaging_pre_checkouts.

Вот и всё, это был финальный шаг. Отправляемся в наши сообщения на Facebook, создаем новое сообщение и отправляем его созданному нами сообществу/группе.

Наслаждайтесь:)

Прокрутить вверх