Facebook Messenger — подключение и проверка

Бот отвечает в личных сообщениях вашей страницы Facebook. Личный профиль подключить нельзя — нужна именно страница.

Что нужно заранее

  • Страница Facebook, где вы администратор.
  • Аккаунт Meta for Developers и приложение типа Business с добавленным продуктом Messenger.
  • Роль администратор в проекте ImpactBot: канал подключает только она.
  • Свободный слот канала в тарифе — иначе подключение остановится с сообщением про лимит.

Отдельно про доступность: пока приложение не прошло Meta App Review, канал работает только для тест-аккаунтов приложения и для людей с ролью в нём. Это ограничение Meta, а не настройка ImpactBot, и обойти его нельзя.

Права и доступы

От Meta нужны два значения, и оба обязательны:

  • Page Access Token — токен конкретной страницы (Messenger → раздел Settings, блок Access Tokens). По нему бот пишет от имени страницы.
  • App Secret — раздел Settings, вкладка Basic. Им подписан каждый входящий запрос: ImpactBot сверяет заголовок `X-Hub-Signature-256` и отвергает событие с чужой или отсутствующей подписью. Канал без App Secret не создаётся, а если бы создался — приём был бы открыт любому, кто угадал адрес.

Для боевого запуска приложению нужно разрешение `pages_messaging`, выдаваемое App Review.

Подключение и вебхук

  1. developers.facebook.com → My Apps → приложение Business → добавьте продукт Messenger.
  2. Messenger → раздел Settings, блок Access Tokens → выберите страницу → сгенерируйте Page Access Token.
  3. раздел Settings, вкладка Basic → скопируйте App Secret.
  4. Проект → КаналыFacebook Messenger → название, Page Access Token, App Secret → «Подключить».

Дальше адрес приёма прописывается вручную — Meta принимает Callback URL только из своей консоли. После подключения окно показывает два готовых значения: Webhook URL (Callback URL) и Verify Token. Verify Token генерирует ImpactBot; придумывать его не нужно.

  • Messenger → раздел Settings, блок Webhooks → Add Callback URL → вставьте оба значения → Verify and Save. Meta дёрнет адрес запросом `hub.mode=subscribe`; если Verify Token совпал, проверка пройдёт.
  • Там же подпишите страницу на события messages и messaging_postbacks — без подписки Meta не пришлёт ни одного сообщения.

Проверка

Нажмите «Проверить» на карточке канала. Диагностика Facebook показывает: подтверждён ли Page Access Token и какая это страница, сохранён ли App Secret для проверки подписи, разрешена ли отправка (проба уходит на заведомо несуществующего получателя — доставки не происходит) и приходили ли входящие.

После этого напишите странице из Messenger аккаунтом, у которого есть доступ к приложению, — сообщение должно появиться в разделе «Диалоги».

Частые ошибки

  • «Facebook App Secret is required». Заполнен только токен страницы.
  • «Invalid Facebook Page Access Token». Взят пользовательский токен вместо токена страницы либо срок токена истёк.
  • Meta не проходит верификацию (Forbidden). Verify Token введён не тот: берите его из окна подключения, а не придумывайте.
  • Бот молчит. Страница не подписана на `messages` и `messaging_postbacks` в разделе Webhooks.
  • В журнале «invalid X-Hub-Signature-256». App Secret взят из другого приложения Meta — подпись считается другим ключом.
  • Работает только у администраторов страницы. Приложение не прошло App Review: у Meta это штатное поведение режима разработки.