Я пытаюсь настроить веб-хук для новой платформы ботов Facebook Messenger на своем веб-сервере PHP и получаю эту ошибку:
URL не может быть подтвержден. Ответ не соответствует запросу,
ожидаемое значение = ‘364011207’, получено = ‘
https://developers.facebook.com/docs/messenger-platform/quickstart
https://developers.facebook.com/docs/messenger-platform/webhook-reference#common_format
Любая помощь с благодарностью.
Я наткнулся на исправление. Я отменил попытку 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/
Этот код Node.js код и должен быть запущен на сервере, а не в <script>
тег в вашем HTML.
Вот простой пример настройки бота мессенджера с помощью node.js:
https://github.com/voronianski/simon-le-bottle
По сути, вам нужно убедиться, что у вас есть хост, который поддерживает приложения node.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, с подчеркиванием, а не с точкой, например :
Постскриптум
Извините, это действительно для PHP
Если вы используете это как 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);
});