2017-04-20 3 views
1

Ich habe einen Webhook Anrufbeantwortung Twilio Sprachanrufe erstellt.Anfrage undefined in Twilio mit node.js und express

var router = require('express').Router(); 
var twilio = require('twilio'); 

router.post("/voice", (request, response) => { 
    // var fs = require('fs'); 
    // var util = require('util'); 
    // fs.writeFileSync('./request.json', util.inspect(request.body), 'utf-8'); 
    console.log(request.body); 
    console.log('Call received from ' + request.body.From); 
    //twimlAnswer();} 

Die Webhook und die Anschlussarbeiten in Ordnung, aber ich versuche, einige der Anforderungsparameter zur Verfügung gestellt von ‚Antrag‘ Twilio innen in der Regel für den Zugriff auf (ähnlich wie als dieses Beispiel https://www.twilio.com/docs/tutorials/automated-survey-node-express#responding-to-a-phone-call)

Ich erhalte die folgendes Protokoll:

Express server listening on port 3000 
undefined 
TypeError: Cannot read property 'From' of undefined 
    at router.post 

Wissen Sie, warum ich nicht korrekt auf die Anfrage zugreife? Die meisten Beispiele, die ich habe kein Problem gefunden Zugriff request.body ...

Danke,

+1

Verwenden Sie Express Body-Parser? – Molda

+0

@Molda ja ich bin, aber ich habe es auch deaktiviert und macht überhaupt keinen Unterschied, request.body ist immer noch undefined –

+0

@Molda, eigentlich hast du mich in die richtige Richtung gebracht, ich hatte Body-Parser aber ich nie erklärt hat die app.use gemacht (urlencoded ({extended: true})); Deshalb konnte ich keine Änderung bemerken und die Anfrage wurde nicht ausgefüllt. Vielen Dank! –

Antwort

0

Twilio Entwickler Evangelist hier.

. Um also den Anfragetext in Express zu lesen, müssen Sie das Body Parser-Modul einfügen und die App so einstellen, dass sie den Parser urlencoded verwendet. Ein bisschen wie das:

var router = require('express').Router(); 
var twilio = require('twilio'); 
var bodyParser = require('body-parser'); 

router.use(bodyParser.urlencoded({ extended: false })); 

router.post("/voice", (request, response) => { 
    console.log('Call received from ' + request.body.From); 
    // respond to webhook 
}); 
+0

Danke @philnash, in der Tat war das Problem, dass ich nicht Body-Parser verwendet habe (die Zeile router.use (bodyParser.urlencoded ({erweitert: false})); fehlte) –

Verwandte Themen