2017-04-20 13 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();} 

ウェブフックとの接続作業罰金が、私は通常、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

エクスプレスボディパーサーを使用していますか? – Molda

+0

@Moldaはい、私もそれを無効にして、全く違いはありません、request.bodyはまだ定義されていません –

+0

@Molda、実際にあなたは私を正しい方向に置いて、私はボディパーサーを宣言しましたが、 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}));) –

関連する問題