Erste und „Fehler, falsche Prüfkarte“ bei dem Versuch, einen Facebook-Chatbot zu erstellen

stimmen
2

Ich versuche, eine Facebook chatbot mit NodeJS, Express und einem Heroku Server zu erstellen.

Ich habe meine Webhook auf Heroku und hatte es von Facebook überprüft und gespeichert. Ich begann dann Code hinzufügen, die die eingehenden Nachrichten antworten würde, und ich kann nicht scheinen, es zu vernetzen. Es hält „Fehler, falsche Prüfkarte“ sagen, wenn ich versuche, meine Webhook in meinem Browser zu laden. Und wenn ich versuche, meine bot eine Botschaft, die ich keine Antwort erhalten zu senden. Obwohl schon hatte ich es überprüft und nicht den Code ändern.

Hier ist mein 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);
    }
  });
}

Also bin ich verwirrt, warum nichts passiert ist und warum ich diesen Fehler. Ich fühle mich wie ich einen ganzen Schritt fehlt. Ich verfolge dieses Tutorial durch die Art und Weise: https://developers.facebook.com/docs/messenger-platform/quickstart

Jede Hilfe ist willkommen. Vielen Dank!

Edit: Hier sind meine Heroku logs

Heroku

Veröffentlicht am 16/04/2016 um 17:13
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Sie verwenden eigentlich „Anfrage“, aber sie sind es nicht überall zu importieren. Hier ist, wie es zu beheben:

var request = require("request")

Sobald Sie fügte hinzu, dass auf Ihre index.js oder app.js Datei (im Grunde alles, was diese Datei ist), stellen Sie sicher, dass Sie tun können:

npm install request --save

Dies sollte es beheben. Leider Heroku Fehler nicht und sagt, dass es nicht weiß, was „Bitte“ und das ist, warum es so schwer war dies in erster Linie, um herauszufinden!

Beantwortet am 16/04/2016 um 19:06
quelle vom benutzer

stimmen
0

  1. Sie nicht Ihre vollständige Zugriffstoken hier posten!
  2. Haben Sie den Ausgang der Herausforderung getestet? Da es nur ein GET ist und Sie wissen , alle Werte können Sie es selbst ausprobieren: your-app-domain.com/your-callback-url?hub_mode=subscribe&hub_verify_token=the_token_you_set_in_your_app_config&hub_challenge=pingdie print ‚ping‘ Sould wenn alles gut funktionieren.
  3. Stellen Sie sicher, dass Sie sendStatus (200) an der Nabe challenge response hinzufügen, auch.
  4. Zuerst müssen Sie Ihre Seite der App abonnieren. Um dies zu tun eine POST-Anforderung machen / your-page-id / subscribed_apps die zurückgeben sollte „Erfolg“. Sie können eine GET-Anforderung an denselben Endpunkt machen danach Ihre App zu verdoppeln überprüfen zu Ihrer Seite abonniert
  5. Sie erwähnten nicht, welche Ereignisse Sie abonnieren (benötigt message_deliveries, Nachrichten, messaging_optins, messaging_postbacks sein)
  6. Stellen Sie sicher, dass die webhooks Registerkarte in der App-Dashboard jetzt sagt „complete“
  7. Nochmal testen
Beantwortet am 18/04/2016 um 11:34
quelle vom benutzer

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