Obținerea și „Eroare, greșit indicativ de validare“, atunci când încearcă să creeze un chatbot Facebook

voturi
2

Am încercat să creeze un chatbot Facebook cu NodeJS, Express, și un server Heroku.

Am creat webhook meu pe Heroku și a avut-o verificat și salvat de facebook. Apoi am început adăugarea de cod care ar răspunde la mesajele primite și nu pot par să-l conectat. Se tot spune „Eroare, jeton de validare greșit“ când încerc să încărcați webhook meu în browser-ul meu. Și când încerc să trimit un mesaj bot meu nu primesc nici un răspuns. Chiar dacă am deja l-au verificat și nu a schimbat codul.

Aici este codul meu:

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

Deci , eu sunt confuz ca de ce nu se întâmplă nimic și de ce eu sunt obtinerea această eroare. Simt că îmi lipsește un pas întreg. Urmez acest tutorial de modul în care : https://developers.facebook.com/docs/messenger-platform/quickstart

Orice ajutor este apreciat. Mulțumiri!

Editare: Aici sunt jurnalele mele Heroku

Jurnale

Întrebat 16/04/2016 la 17:13
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Sunteți de fapt, folosind „cerere“, dar sunt niciodată importul oriunde. Iată cum să-l repara:

var request = require("request")

După ce ați adăugat că la index.js sau fișierul app.js (în principiu, indiferent de acest fișier este), asigurați-vă că faceți:

npm install request --save

Acest lucru ar trebui să-l repare. Din păcate, Heroku nu eroare afară și spune că nu știe ce este „cerere“ și de aceea a fost atât de greu să dau acest lucru în primul rând!

Publicat 16/04/2016 la 19:06
sursa de către utilizator

voturi
0

  1. Nu postați jetoanele de acces complet aici!
  2. Ați testat ieșirea provocării? Din moment ce este doar o prezentare și tu știi toate valorile îl puteți încerca le: your-app-domain.com/your-callback-url?hub_mode=subscribe&hub_verify_token=the_token_you_set_in_your_app_config&hub_challenge=pingcare sould de imprimare „ping“ dacă totul funcționează bine.
  3. Asigurați-vă că adăugați sendStatus (200) la răspunsul hub provocare, de asemenea.
  4. Trebuie să vă abonați la pagina aplicației prima. Pentru a face acest lucru face o cerere POST / ta-page-id / subscribed_apps care ar trebui să se întoarcă „succes“. Puteți face o cerere de a ajunge la același final după aceea pentru a dubla a verifica aplicația este abonat la pagina dvs.
  5. Nu ai menționat evenimentele care v-ați abonat (trebuie să fie message_deliveries, mesaje, messaging_optins, messaging_postbacks)
  6. Asigurați-vă că fila webhooks din tabloul de bord app acum spune „complet“
  7. Testați din nou
Publicat 18/04/2016 la 11:34
sursa de către utilizator

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