Facebook σφάλμα αγγελιοφόρος bot «TypeError: Δεν είναι δυνατή η ανάγνωση ακίνητο“0”του απροσδιόριστο.»

ψήφοι
1

Προσπαθώ να δημιουργήσει ένα chatbot Facebook χρησιμοποιώντας NodeJS, Express, και ένα διακομιστή Heroku.

Δημιούργησα webhook μου για Heroku και είχε επαληθευτεί και αποθηκευτεί από το Facebook. Στη συνέχεια έτρεξε αυτόν τον κωδικό για να συνδεθείτε webhook μου στο Facebook.

curl -ik -X POST https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<token>

Αυτό επέστρεψε {επιτυχία: αλήθεια}.

Έτσι λοιπόν άρχισα να προσθέσετε κώδικα που θα απαντήσει σε εισερχόμενα μηνύματα, αλλά δεν μπορώ να φαίνεται να το πάρει για να λάβει την έστειλε πληροφορίες. Κάθε φορά που στέλνω ένα μήνυμα που παίρνω καμία απάντηση.

Τα πάντα είναι συνδεδεμένο και λειτουργεί, αλλά το σφάλμα αυτό έχω πάρει «TypeError: Δεν είναι δυνατή η ανάγνωση ακίνητο“0”των ακαθόριστων» είναι επειδή δεν είμαι να πάρει τις πληροφορίες μήνυμα που έστειλε προς webhook μου από το facebook. Αυτή είναι η γραμμή του κώδικα που είναι κενή:

messaging_events = req.body.entry[0].messaging;

Εδώ είναι η πλήρης κωδικός μου:

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

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

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

app.get('/', function (req, res) {
  if (req.query['hub.verify_token'] === '8FKU9XWeSjnZN4ae') {
    res.send(req.query['hub.challenge']);
    console.log(app.get ran)
    res.sendStatus(200)
  }

  console.log(Error: wrong validation token)
})

app.post('/', function (req, res) {
  messaging_events = req.body.entry[0].messaging;
  console.log(app.post ran)
  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);
});

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

Εδώ είναι Heroku Logs μου:

Heroku

Έτσι, είμαι σύγχυση ως προς το γιατί δεν είμαι να πάρει τα στοιχεία του μηνύματος, όταν webhook μου είναι συνδεδεμένο στο Facebook και επικοινωνούν. Επίσης, φρόντισε είχα όλα τα πεδία της συνδρομής αναγκαία ελέγχονται.

Όποιος δει το πρόβλημα; Κάθε βοήθεια είναι ευπρόσδεκτη. Ευχαριστώ!

Επεξεργασία: Είμαι ακολουθούν αυτόν τον οδηγό από τον τρόπο - https://developers.facebook.com/docs/messenger-platform/quickstart

Δημοσιεύθηκε 21/04/2016 στις 14:06
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Είχα το ίδιο πρόβλημα. Μπορείτε να προσθέσετε app.use (bodyParser.json ()) πριν από bodyParser.urlencoded ());

Απαντήθηκε 22/04/2016 στις 12:43
πηγή χρήστη

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