2016-04-20 17 views
1

Ich versuche einen Facebook Chatbot mit NodeJS, Express und einem Heroku Server zu erstellen.Problem beim Verbinden des Webhook mit Facebook Messenger Bot

Ich habe meinen Webhook auf Heroku erstellt und von Facebook verifiziert und gespeichert. Ich habe dann diesen Code ausgeführt, um meinen Webhook mit Facebook zu verbinden.

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

Dies ergab {Erfolg: Wahr}.

Also habe ich angefangen, Code hinzuzufügen, der auf eingehende Nachrichten antworten würde, aber ich kann nicht scheinen, es zu verbinden. Immer wenn ich eine Nachricht sende, bekomme ich keine Antwort.

Hier ist mein Code:

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('wyrdbot.herokuapp.com', 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); 
    } 
    }); 
} 

ich versucht haben, es zu debuggen und haben die app.post Funktion realisiert wird überhaupt nicht ausgeführt wird. Ich habe auch Fehler bekommen, dass mein Webhook deaktiviert wurde.

Wenn ich meine Protokolle überprüfen Das finde ich ein paar Mal ausgedruckt:

2016-04-20T14:13:31.487873+00:00 heroku[router]: at=info method=POST path="/" host=wyrdbot.herokuapp.com request_id=fa1e5270-5038-4e67-b7a6-c6852c7c3000 fwd="173.252.90.101" dyno=web.1 connect=0ms service=16ms status=404 bytes=212 

ich vollständig über das, was die Ideen bin zu versuchen. Wer weiß, was ich vermisse?

Jede Hilfe wäre willkommen. Vielen Dank!

Antwort

1

Verwenden app.use (bodyParser.json());. als Face JSON Daten anfordern Körper sendet

0

Versuchen app.post ('/', function (REQ, res) {

+0

Das half, die 'app.post'-Funktion läuft jetzt, aber es bekommt die Nachrichtendaten nicht, ich weiß das, weil ich einen _TypeError bekomme: Kann die Eigenschaft' 0 'von undefined_ error nicht lesen Die Nachrichtendaten zu halten ist leer. –

Verwandte Themen