Facebook Messenger API: проблемы с настройкой webhook

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

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

ресурсы

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

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

любая помощь очень ценится.

6 ответов


я наткнулся на исправление. Я отказался от попытки 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/


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

вот простая прогулка по настройке бота messenger с узлом.Яш: https://github.com/voronianski/simon-le-bottle

по существу вам нужно убедиться, что у вас есть хост, который поддерживает узел.JS приложений и запустить его как таковой. Он не будет работать внутри HTML.


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


@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

надеюсь, что это помогает!


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

  • hub_verify_token
  • hub_mode
  • hub_challenge

П. С.

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


Если вы используете это как Node.js приложение, и вы идете от Руководство Facebook Quickstart упомянутый в вопросе, вам придется указать URL-адрес webhook на [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);
});