Obtenir et « Erreur, mauvais jeton de validation » lorsque vous essayez de créer un Chatbot Facebook

voix
2

Je suis en train de créer un chatbot Facebook avec NodeJS, Express, et un serveur Heroku.

J'ai créé mon webhook sur Heroku et l'avait vérifié et sauvé par facebook. Je puis commencé à ajouter du code qui répondrait aux messages entrants et je ne peux pas sembler l'obtenir connecté. Il ne cesse de dire « Erreur, mauvais jeton de validation » lorsque je tente de charger mon webhook dans mon navigateur. Et lorsque je tente d'envoyer mon bot un message que je reçois pas de réponse. Même si j'avais déjà vérifié et il n'a pas changé le code.

Voici mon code:

var express = require('express');
var bodyParser = require('body-parser');

var app = express();
var port = process.env.PORT || 3000;

// body parser middleware
app.use(bodyParser.urlencoded({ extended: true }));

// test route
//app.get('/', function (req, res) { res.status(200).send('Hello world!') });

app.get('/', function (req, res) {
  if (req.query['hub.verify_token'] === '8FKU9XWeSjnZN4ae') {
    res.send(req.query['hub.challenge']);
  }
  res.send('Error, wrong validation token');
})

app.post('/', function (req, res) {
  messaging_events = req.body.entry[0].messaging;
  for (i = 0; i < messaging_events.length; i++) {
    event = req.body.entry[0].messaging[i];
    sender = event.sender.id;
    if (event.message && event.message.text) {
      text = event.message.text;
      sendTextMessage(sender, Text received, echo: + text.substring(0, 200));
    }
  }
  res.sendStatus(200);
});

// error handler
app.use(function (err, req, res, next) {
  console.error(err.stack);
  res.status(400).send(err.message);
});

app.listen(port, function () {
  console.log('Listening on port ' + port);
});

var token = <myToken>;

function sendTextMessage(sender, text) {
  messageData = {
    text:text
  }
  request({
    url: 'https://graph.facebook.com/v2.6/me/messages',
    qs: {access_token:token},
    method: 'POST',
    json: {
      recipient: {id:sender},
      message: messageData,
    }
  }, function(error, response, body) {
    if (error) {
      console.log('Error sending message: ', error);
    } else if (response.body.error) {
      console.log('Error: ', response.body.error);
    }
  });
}

Je suis confus quant à la raison pour laquelle rien ne se passe et pourquoi j'obtenir cette erreur. Je me sens comme si je manque une étape dans son ensemble. Je suivais ce tutoriel par la manière: https://developers.facebook.com/docs/messenger-platform/quickstart

Toute aide est appréciée. Merci!

Edit: Voici mes journaux de Heroku

Heroku

Créé 16/04/2016 à 17:13
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

Vous utilisez réellement « demande » mais vous n'êtes jamais importer partout. Voici comment y remédier:

var request = require("request")

Une fois que vous avez ajouté que vos index.js ou fichier app.js (essentiellement tout ce fichier est), assurez-vous que vous faites:

npm install request --save

Cela devrait corriger. Malheureusement, Heroku ne pas l'erreur et dire qu'il ne sait pas ce « demande » est et c'est la raison pour laquelle il était si difficile de comprendre cela en premier lieu!

Créé 16/04/2016 à 19:06
source utilisateur

voix
0

  1. Ne publiez pas vos jetons d'accès complet ici!
  2. Avez - vous testé la sortie du défi? Comme il est juste un GET et vous savez toutes les valeurs que vous pouvez essayer vous - même: your-app-domain.com/your-callback-url?hub_mode=subscribe&hub_verify_token=the_token_you_set_in_your_app_config&hub_challenge=pingqui Sould print « ping » si tout fonctionne bien.
  3. Assurez-vous d'ajouter sendStatus (200) à la réponse de défi du moyeu aussi.
  4. Vous devez vous abonner votre page à l'application d'abord. Pour ce faire une demande POST / votre page ID / subscribed_apps qui devrait revenir « succès ». Vous pouvez faire une requête GET au même point final après vérifier votre application est abonné à votre page
  5. Vous ne l'avez pas mentionné quels événements vous êtes abonné (doit être message_deliveries, messages, messaging_optins, messaging_postbacks)
  6. Assurez-vous que les onglet de webhooks dans votre tableau de bord de l'application dit maintenant « complète »
  7. Testez à nouveau
Créé 18/04/2016 à 11:34
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more