2016-04-18 6 views
2

Ich versuche, einen Facebook-Messenger-Bot einzurichten und weiter in die gleichen zwei Fehler zu laufen."Webhooks fehlgeschlagen" und "Webhooks deaktiviert" Fehler beim Versuch, facebook Messenger Bot einzurichten

Webhooks Fehler:

Webhooks failing

Webhooks deaktiviert:

Webhooks disabled

ich meine chatbot mit NodeJS, Express und einem Server zu erstellen. Ich betreibe meinen Webhook auf einem Heroku-Server. Ich habe es von Facebook verifizieren und speichern lassen.

Danach lief ich diesen Code:

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

dies mit einer Erfolgsmeldung antwortet so dass ich Code gestartet Addition der eingehenden Nachrichten zu antworten, aber ich kann nicht scheinen, um es zu vernetzen.

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

app.get('/', function (req, res) { 
    if (req.query['hub.verify_token'] === '<myToken>') { 
    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); 
    } 
    }); 
} 

An dieser Stelle sollte ich in der Lage sein, einen Chat mit meinem Bot zu starten und haben es mit einem Echo antworten, aber nichts passiert.

Jede Hilfe wird geschätzt. Vielen Dank!

Antwort

2

Sie hören nicht auf den richtigen Endpunkt. Ihre app.post('/' sollte

app.post('/webhook', function(req, res) { 
    var messagingEvents = req.body.entry[0].messaging; 

    messagingEvents.forEach(function(event) { 
    var sender = event.sender.id; 
+0

Würde ich die _app.get_ Funktion auch ändern? –

+0

Ja ... sie sollten beide auf dem Webhook-Endpunkt hören. Beide bekommen & post – StarlineVentures

+0

Ok, benutze ich den falschen Webhook? Wenn ich versuche, dieses 'app.get ('/ wyrdbot.herokuapp.com', Funktion (req, res)) auszuführen' 'bekomme ich einen _Cannot Get/_ Fehler, wenn ich meinen Webhook in meinem Browser lade. –