Προσπαθώ να δημιουργήσει ένα 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 μου:
Έτσι, είμαι σύγχυση ως προς το γιατί δεν είμαι να πάρει τα στοιχεία του μηνύματος, όταν webhook μου είναι συνδεδεμένο στο Facebook και επικοινωνούν. Επίσης, φρόντισε είχα όλα τα πεδία της συνδρομής αναγκαία ελέγχονται.
Όποιος δει το πρόβλημα; Κάθε βοήθεια είναι ευπρόσδεκτη. Ευχαριστώ!
Επεξεργασία: Είμαι ακολουθούν αυτόν τον οδηγό από τον τρόπο - https://developers.facebook.com/docs/messenger-platform/quickstart














