it-swarm.com.ru

API Facebook Messenger: проблема с настройкой веб-крючка

Я пытаюсь настроить веб-хук для новой бот-платформы Facebook Messenger на моем PHP веб-сервере и получаю эту ошибку:

URL не может быть подтвержден. Ответ не соответствует запросу, ожидаемое значение = '364011207', получено = '

Ресурсы

https://developers.facebook.com/docs/messenger-platform/quickstart

https://developers.facebook.com/docs/messenger-platform/webhook-reference#common_format

Любая помощь с благодарностью.

14
Shane

Я наткнулся на исправление. Я отменил попытку js и создал новый php-файл со следующим кодом:

<?php

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'my_token_code') {
echo $challenge;
}

Я получил этот код в первые 10 минут видео: https://www.facebook.com/marketingdevelopers/videos/883648801749520/

21
Shane

Этот код является кодом node.js и должен запускаться на сервере, а не в теге <script> в вашем HTML.

Вот простой способ настройки бота мессенджера с помощью node.js: https://github.com/voronianski/simon-le-bottle

По сути, вам нужно убедиться, что у вас есть Хост, поддерживающий приложения node.js, и запускать его как таковой. Это не будет работать внутри HTML.

6
Jamund Ferguson

Я просто решил эту проблему, добавив/webhook в URL обратного вызова ...

4
Zernel

@shane

webhook: function(req, res) {

   if (req.query['hub.verify_token'] === 'tokentoken') {
      res.send(req.query['hub.challenge']);
   } else {
      res.send('Error, wrong validation token');    
   }
}

Обратите внимание, что именно вы делаете. но это то, что я сделал, и это работает.

Я протестировал использование сервера ngrok, так как у меня нет имени домена и URL обратного вызова: https://werwrwetwtw.ngrok.io/webhook

Надеюсь это поможет!

3
Natraj

Если вы используете его как приложение Node.js, и вы пришли из Руководства по быстрому запуску Facebook , упомянутого в вопросе, вам нужно будет указать URL-адрес веб-крючка на [your-server-root]/webhook. Обратите внимание на эту часть учебник :

// Adds support for GET requests to our webhook
app.get('/webhook', (req, res) => {
    ...
    // Responds with the challenge token from the request
    res.status(200).send(challenge);
});
2
che-azeh

Не уверен, что это поможет, но параметры запроса, которые отправляет FB, с подчеркиванием, а не с точкой, например :

  • hub_verify_token 
  • hub_mode 
  • hub_challenge

Постскриптум 

Извините, это действительно для PHP 

2
Stan Kolev