web-dev-qa-db-fra.com

API Facebook Messenger: Problème lors de la configuration d'un Webhook

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 = '

Ressources

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.

14
Shane

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/

21
Shane

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.

6
Jamund Ferguson

Je viens de résoudre ce problème en ajoutant '/ webhook' dans l'URL de rappel ...

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');    
   }
}

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!

3
Natraj

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);
});
2
che-azeh

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. :

  • hub_verify_token 
  • hub_mode 
  • hub_challenge

P.S. 

Désolé, cela est valable pour PHP. 

2
Stan Kolev