2016-04-13 11 views
3

, benim webhook tanımsız req.body alıyorum standart belgelerine göre tüm adımları izledikten sonra:Facebook Messenger API "istek gövdesi tanımsız"

app.post('/webhook/', function(req, res) { 
    console.log("message received " + req.body); 
    if(!req.body){ 
     console.log("no request body found"); 
     res.sendStatus(200); 
     return; 
    } 

    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; 
     console.log("sender " + event.sender + ", message " + event.message.text); 
     if (event.message && event.message.text) { 
      text = event.message.text; 
      // Handle a text message from this sender 
      sendTextMessage(sender, "Text received, echo: "+ text.substring(0, 200)); 
     } 
    } 

    res.sendStatus(200); 
}); 

Edit

Ben Onaylama gerekir mi Test yapmadan önce Bot? Ayrıca benim Facebook Sayfam Live

+0

Webhooks (bir HTML formu fe gibi olurdu) “normal” POST isteği göndermeyin JSON verilerini doğrudan uygun içerik türüyle gönderirler. Çoğu çerçeve/dil, bu durumda olağan istek veri yapılarını otomatik olarak doldurmaz (PHP'nin $ _POST süper küreseli gibi), ancak bunun yerine _raw_ verilerini kendiniz okumalısınız. Eğer sizin diliniz/çerçeveniz için bu durum söz konusu ise (ki bundan bahsetmediniz, btw.), Araştırmanız gerekir. – CBroe

+0

@CBroe Heroku – dhaval

+0

üzerinde dağıtılan Parse Cloud Code'u kullanıyorum C# .Net'de aynı kodu nereden bulabilirim? –

cevap

12

Express'in son sürümleri (4.x), middleware'i temel çerçeveden ayırdı. Eğer vücut ayrıştırıcı gerekiyorsa, ayrı

npm install body-parser --save 

yüklemek gerekir ve daha sonra kodunuzda bunu

var bodyParser = require('body-parser') 

var app = express() 

// parse application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({ extended: false })) 

// parse application/json 
app.use(bodyParser.json()) 
+0

Teşekkürler @Giovanne Dias benim hatamdı, vücut ayrıştırıcısının başlatılmamış olduğunu fark etmedim – dhaval

+0

3 saatten beri aradığım için teşekkürler :) –