Je suis en train de créer un chatbot Facebook en utilisant NodeJS, Express, et un serveur Heroku.
J'ai créé mon webhook sur Heroku et l'avait vérifié et enregistré par Facebook. J'ai alors couru ce code pour connecter mon webhook à Facebook.
curl -ik -X POST https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<token>
ce retour {succès: true}.
Alors je commencé à ajouter du code qui répondrait aux messages entrants mais je ne peux pas sembler l'obtenir pour recevoir les informations envoyées. Chaque fois que j'envoie un message que je reçois pas de réponse.
Tout est connecté et en cours d'exécution, mais cette erreur que je reçois « TypeError: ne peut pas lire la propriété « 0 » undefined » est parce que je ne reçois pas les informations de message envoyé à mon webhook de facebook. Ceci est la ligne de code qui est vide:
messaging_events = req.body.entry[0].messaging;
Voici mon code complet:
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);
}
});
}
Voici mes journaux Heroku:
Je suis confus quant à pourquoi je ne reçois pas les données du message lorsque mon webhook est connecté à Facebook et ils communiquent. J'ai aussi fait que j'avais tous les champs de souscription nécessaires cochés.
Quelqu'un voit-il le problème? Toute aide est appréciée. Merci!
Edit: je suis ce guide en passant - https://developers.facebook.com/docs/messenger-platform/quickstart














