J'essaie de configurer un raccordement Web pour la nouvelle plate-forme bot Facebook Messenger sur mon serveur Web PHP et je reçois cette erreur:
L'URL n'a pas pu être validé. La réponse ne correspond pas au défi, valeur attendue = '364011207', reçue = '
https://developers.facebook.com/docs/messenger-platform/quickstart
https://developers.facebook.com/docs/messenger-platform/webhook-reference#common_format
Toute aide est grandement appréciée.
Je suis tombé sur un correctif. J'ai abandonné ma tentative js et créé un nouveau fichier php avec le code suivant:
<?php
$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];
if ($verify_token === 'my_token_code') {
echo $challenge;
}
J'ai eu ce code des 10 premières minutes de cette vidéo: https://www.facebook.com/marketingdevelopers/videos/883648801749520/
Ce code est node.js et doit être exécuté sur le serveur, pas dans une balise <script>
dans votre code HTML.
Voici une procédure simple pour configurer le bot de messagerie avec node.js: https://github.com/voronianski/simon-le-bottle
Pour l'essentiel, vous devez vous assurer que vous avez un hôte qui prend en charge les applications node.js et l'exécuter en tant que tel. Cela ne fonctionnera pas dans HTML.
Je viens de résoudre ce problème en ajoutant '/ webhook' dans l'URL de rappel ...
@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');
}
}
Notez bien ce que vous faites exactement. mais c'est ce que j'ai fait et ça marche.
J'ai testé avec ngrok server car je n'ai pas de nom de domaine et l'adresse de rappel est https://werwrwetwtw.ngrok.io/webhook
J'espère que cela t'aides!
Si vous utilisez ceci en tant qu'application Node.js
et que vous venez du Le Guide de démarrage rapide Facebook mentionné dans la question, vous devrez pointer l'URL du Webhook sur [your-server-root]/webhook
. Notez cette partie de le tutoriel :
// 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);
});
Vous ne savez pas si cela vous aidera, mais les paramètres de requête envoyés par le bloc fonction sont soulignés et non point par exemple. :
P.S.
Désolé, cela est valable pour PHP.