2017-02-13 1 views
1

Mon nœud js bot est incapable de vérifier le jeton de validation pour la plate-forme de bot facebook messenger. J'ai fait correctement la configuration du webhook dans la console du développeur en suivant la documentation officielle donnée. J'ai déjà construit un chatbot, donc je peux être sûr que j'ai configuré correctement les paramètres de la console d'application. Veuillez vérifier mon code suivant et dites-moi s'il y a quelque chose qui ne va pas.fb messenger bot retourne toujours json vide pendant la vérification des webhooks

'use strict' 

const express = require('express'); 
const bodyParser = require('body-parser'); 
const request = require('request'); 
const app = express(); 

app.set('port', (process.env.PORT || 5000)); 

// Process application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({extended: false})); 

// Process application/json 
app.use(bodyParser.json()); 

const VALIDATION_TOKEN = (process.env.MESSENGER_VALIDATION_TOKEN) ? 
    (process.env.MESSENGER_VALIDATION_TOKEN) : 
    'alex'; 


// Webhook route 
app.get('/', function (req, res) { 
    console.log(req.query); 
    // console.log(req.query['hub.verify_token']); 
    if (req.query['hub.verify_token'] === VALIDATION_TOKEN) { 
    console.log("Validating webhook"); 
    res.status(200).send(req.query['hub.challenge']); 
    } else { 
    console.error("Failed validation. Make sure the validation tokens match."); 
    res.sendStatus(403);   
    } 
}); 

// Spin up the server 
app.listen(app.get('port'), function() { 
    console.log('running on port', app.get('port')); 
});  

Le console.log (req.query) retourne un objet vide et toujours la partie else du if-else exécute et imprime console: "Echec de la validation Vérifiez que les jetons de validation correspondance."

+0

Votre rien de retour de route webhook même lorsque vous essayez avec commande curl? En outre, Facebook Messenger n'autorise-t-il que l'URL de rappel avec https? Je demande cela puisque votre code n'a pas de code https. vérifiez à nouveau votre configuration de webhook. – SLee

+0

il renvoie {succès: vrai}. et oui j'utilise heroku. –

+0

J'ai effectivement copié le code à partir des exemples donnés par facebook. –

Répondre

1

Je pense qu'il est possible que vous ayez utilisé "https://your_heroku_url/webhook" comme URL de rappel lors de la configuration de webhook, mais que vous appeliez "https://your_heroku_url/" dans votre code. Essayez le code suivant:

app.get('/webhook', function (req, res) { 
    if (req.query['hub.verify_token'] === VALIDATION_TOKEN) { 
    console.log("Validating webhook"); 
    res.status(200).send(req.query['hub.challenge']); 
    } else { 
    console.error("Failed validation. Make sure the validation tokens match."); 
    res.sendStatus(403);   
    } 
}); 

Référence: https://developers.facebook.com/docs/messenger-platform/guides/quick-start

+0

Non, j'ai fait la configuration correctement. Je reçois les messages de l'utilisateur sur une demande de publication. –

+0

hmm ... comment pourriez-vous obtenir une demande de publication lorsque le webhook n'est pas validé? – SLee