. Разработка чат-бота для Facebook Messenger
Разработка чат-бота для Facebook Messenger

Разработка чат-бота для Facebook Messenger

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

Создание страницы

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

Регистрация и настройка приложения

Переходим к регистрации своего приложения в аккаунте разработчика. Заходим по ссылке developers.facebook.com/apps Нажимаем на добавление нового приложения, выбираем другой настройку вручную:

Далее заполняем форму:

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

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

В переменную $verify_token необходимо добавить какой-то текст. Скрипт загружаем на сервер. Допустим, наш скрипт доступен по адресу: domain.com/fbbot

Возвращаемся ко вкладке Messenger в настройках приложения FB. Ищем блок «Webhooks» и кнопку «Setup Webhooks». Кликаем на нее.

В поле «Обратный URL-адрес» указываем адрес нашего бота — domain.com/fbbot SSL — сертификат является обязательным. Самоподписанный сертификат не подойдет.

  • message_deliveries — уведомления о доставке сообщения
  • messages — сообщения, написанные пользователем боту
  • messaging_optins — callback при получении сообщения через кнопку на сайте (Send-to-Messenger Plugin)
  • messaging_postbacks — переходы по кнопкам из предыдущих сообщений бота (будет понятно далее)

Связываем приложение и страницу

Набираем в консоли:

-token- заменяем на токен вашей страницы.

Типы сообщений в FB Messenger

  • button — кнопки
  • generic — элементы
  • receipt — счет на оплату
Кнопки (button)

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

  1. Отправляющие ответ боту
  2. Переходящие по адресу в интернете
Элементы (generic)

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

В одном сообщении может содержаться до 10 элементов. При наличии более одного элемента, появляется горизонтальная прокрутка. Важный момент: в одном таком сообщении может быть максимум 3 кнопки, при попытке отправить сообщение с бОльшим количеством кнопок — оно просто не дойдет до получателя.

Счет на оплату (receipt)

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

Важный момент: номер счета должен быть уникальным.

Пишем код

На момент написания бота, на GitHub еще не было реализации API на PHP, поэтому пришлось писать PHP SDK самостоятельно.

Устанавливаем PHP SDK для работы с FB Messenger API при помощи composer:

Создаем файл index.php:

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

Проверяем. Находим в мессенджере нашего бота и пробуем отправить ему любое сообщение. В ответ мы должны получить от него «Hi there!». Важно: Пока приложение не прошло модерацию бот будет работать только для автора приложения.

Если все работает как надо, идем дальше.

В блок получения сообщения добавляем:

  • text
  • button
  • generic
  • receipt

Реальный пример Бота для фриланс-биржи Job4Joy

Итак, наша цель, реализовать бота, который по нашему запросу будет выдавать новые проекты в соответствующей категории. Данные будем получать по RSS, используя picoFeed — github.com/fguillot/picoFeed

Создаем файл index.php следующего содержания (комментарии приведены в коде):

И файл config.php следующего содержания:

Публикация в каталоге для всех

Пока бот доступен только для владельца аккаунта. Чтобы бот был доступен для всех, нужно На странице App Review — опубликовать приложение:

После этого нужно запросить модерацию мессенджера. Для этого переходим на вкладку — Messenger. В блоке «App Review for Messenger» нажимаем кнопку «Request Permissions». В появившемся окне выбираем «pages_messaging» и нажимаем «Add items».

Теперь остается только дождаться модерации.

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

Заключение

В статье мы рассмотрели базовые аспекты создания чат-бота для Facebook. Если тема окажется популярной, то готов буду рассказать об опыте разработки ботов под другие популярные мессенджеры.

📎📎📎📎📎📎📎📎📎📎