Reputation: 524
In my app.post file I have changed
var mediaUrl = req.param('MediaUrl' + i); //deprecated in express 4
to
var mediaUrl = req.body.MediaUrl + i; or req.params.MediaUrl + i;
viewing my console logs it does link to to twilio MediaURL0. But on Heroko logs
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
becomes
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
When I upgraded. What I am trying to figure out is why the MediaURL will become a Method=GET, yet any other information will stay as a Method=POST. I require my MediaURL to be a Method=POST for my Twilio SMS messaging app to work.
Here is my complete 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());
});
Upvotes: 1
Views: 51
Reputation: 97707
If you have to calculate an object property name you're going to have to use the bracket notation to access it.
var mediaUrl = req.body['MediaUrl' + i];
Upvotes: 1