将req.param升级到req.body将方法= POST从twilio MediaURL更改为method = GET

时间:2017-04-25 15:49:28

标签: express twilio

在我的app.post文件中,我更改了

var mediaUrl = req.param('MediaUrl' + i); //deprecated in express 4

var mediaUrl = req.body.MediaUrl + i; or req.params.MediaUrl + i;

查看我的控制台日志,它确实链接到twilio MediaURL0。但是在Heroko的日志上

heroku[router]: at=info method=POST path="/message" host=(removed).herokuapp.com request_id=(removed)" dyno=web.1 connect=0ms service=95ms status=200 bytes=256 protocol=https

成为

heroku[router]: at=info method=GET path="/null" host=(removed).herokuapp.com request_id=(removed) fwd="74.3.132.218" dyno=web.1 connect=0ms service=3ms status=304 bytes=146 protocol=https

当我升级时。我想弄清楚的是为什么MediaURL将成为一个Method = GET,但任何其他信息将保留为Method = POST。我要求我的MediaURL成为我的Twilio SMS消息传递应用程序的Method = POST。

这是我的完整app.post

app.post('/message', function (req, res) {
groupRef.where( {"memberNumber":req.body.From} ).limit(1).on( "value", function ( data ){
    if( data.count() ){
        data.forEach( function( snapshot ){
            var member = snapshot.value();
            messagesRef.push({
                sid: req.body.MessageSid,
                type:'text',
                tstamp: new Date().toLocaleString('en-US', { timeZone: "America/Denver" }),
                fromName:member.memberName,
                fromNumber:req.body.From,
                message:req.body.Body,
                media:"",
                groupNumber:req.body.To
            });
        });
    }
});

var numMedia = parseInt( req.body.NumMedia );
if (numMedia > 0) {
    for (i = 0; i < numMedia; i++) {
        //var mediaUrl = req.body.MediaUrl + i;
        //var mediaUrl = req.params.MediaUrl + i;
        var mediaUrl = req.param('MediaUrl' + i); //deprecated in express 4
        groupRef.where( {"memberNumber":req.body.From} ).limit(1).on( "value", function ( data ){
            if( data.count() ){
                data.forEach( function( snapshot ){
                    var member = snapshot.value();
                    messagesRef.push({
                        sid: req.body.MessageSid,
                        type:'text',
                        tstamp: new Date().toLocaleString('en-US', { timeZone: "America/Denver" }),
                        fromName:member.memberName,
                        fromNumber:req.body.From,
                        message:"",
                        media:mediaUrl,
                        groupNumber:req.body.To
                    });
                });
            }
        });
    }
}

var resp = new twilio.TwimlResponse();
resp.message('Message received.');
res.writeHead(200, {
    'Content-Type':'text/xml'
});
res.end(resp.toString());

});

1 个答案:

答案 0 :(得分:1)

如果必须计算对象属性名称,则必须使用括号表示法来访问它。

var mediaUrl = req.body['MediaUrl' + i];