2017-04-20 3 views
1

Twilio 음성 호출에 응답하는 webhook을 만들었습니다.Twilio에서 node.js를 사용하여 정의되지 않은 상태로 표현하고

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

은 webhook와 연결 잘 작동하지만, 나는 보통 Twilio 내부의 '요청'

나는 점점 오전 (이 예 https://www.twilio.com/docs/tutorials/automated-survey-node-express#responding-to-a-phone-call보다 더 유사한 방식)에 의해 제공되는 요청 매개 변수의 일부에 액세스하는 것을 시도하고있다 다음 로그 :

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

요청이 올바르게 액세스되지 않는 이유를 알고 있습니까? 내가 찾은 대부분의 예는 어떤 문제에 접근 request.body ...

감사합니다, 여기

+1

express body-parser를 사용하고 있습니까 ?? – Molda

+0

@Molda 그래,하지만 나는 또한 그것을 비활성화하고 전혀 달라지지 않는다. request.body는 아직 정의되지 않았다. –

+0

@Molda, 실제로 너는 나를 올바른 방향으로 넣었다. 나는 body-parser를 선언했지만 결코 app.use (urlencoded ({extended : true}))를 작성했습니다. 그래서 나는 어떤 변화도 감지 할 수 없었고 요청은 채워지지 않았습니다. 감사! –

답변

0

Twilio 개발자 전도사가 없습니다.

Twilio sends webhook requests as URL encoded form parameters. 따라서 Express에서 요청 본문을 읽으려면 Body Parser 모듈을 포함하고 urlencoded 파서를 사용하도록 앱을 설정해야합니다. 약간은 다음과 같습니다 :

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

고마워요. @philnash, 실제로 문제는 body-parser를 사용하지 않았기 때문입니다 (줄은 입니다. router.use (bodyParser.urlencoded ({extended : false}));)가 누락되었습니다. –

관련 문제