2015-08-03 3 views
0

Ищите пример, как получать и обрабатывать изображения через mms в мое приложение с помощью Twilio.Как получать и обрабатывать фотографии mms с помощью twilio

Рассматривая экран конфигурации номера в панели инструментов twilio, я предполагаю, что я установил входящий номер телефона и URL-адрес HTTP POST для отправки входящих миллиметров. Тем не менее, я не уверен, что отправляется на этот URL-адрес и не знает структуру этих данных.

Есть ли у кого-нибудь пример того, какие данные будут отправляться на адрес и в каком формате? Любые javascript-примеры того, какие данные обрабатывал сервер, были бы замечательными.

ответ

2

Сначала используйте модуль twilio-node (npm install twilio). После того, как у вас есть это место, вы можете просто получить доступ к телу запроса веб-камеры, как если бы вы запросили тело req.body.

Как показано в twilio's docs, структура так:

{ 
    MessageSid: String, //ID pertaining to this message 
    AccountSid: String, //ID pertaining to your twilio account 
    From: String, //phone number of sender 
    To: String, //recipients phone number, you in this case 
    Body: String, //Message body 
    NumMedia: Number, //number of attached media 
    //these values only appear when media is present(NumMedia.length > 0) 
    MediaContentType: [String] //type of content in SMS 
    MediaUrl: [String] //URL to download the media 
} 

Вы можете сделать что-то вроде этого, используя Twilio модули, caolan/модуль асинхронной и популярный request/request модуль:

var twilio = require('twilio'), 
    fs  = require('fs'), 
    async = require('async'), 
    request = require('request'); 

app.post('/mms', function(req, res) { 
    var options = { url: 'https://subtle-gradient-188.herokuapp.com/twiml' }; 
    if (!twilio.validateExpressrequire(req, 'YOUR_TWILIO_AUTH_TOKEN', options)) return res.status(401).send("Bad key!"); 

    if(!req.body.hasOwnProperty('MediaUrl')) return res.send("Missing media..."); 

    var media = req.body.MediaUrl; 

    //download all media 
    async.map(media, download, function(err, filenames) { 

     var resp = new twilio.TwimlResponse(); 
     if(err) { 
      resp.say("Problem occured"); 
      console.log(err); 
     } 
     else resp.say('Files recieved: ' + filenames.join(', ')); 
     res.type('text/xml'); 
     res.send(resp.toString()); 
    }); 
}); 

//download a single url to a unique filename 
function download(url, cb) { 
    var name = Date.now() + url.split('/').pop(); 

    request 
     .get(url) 
     .on('error', cb) 
     .on('end', function() { 
      cb(null, name); 
     }) 
     .pipe(fs.createWriteStream(name)); 
} 
+0

Я заметил, что twilio возвращает объект мультимедиа не как массив, а скорее как именованное свойство, например MediaContentType0 MediaUrl0 – MonkeyBonkey

+0

Некоторые люди делают это, но вы можете обычно обращаться к этому свойству так же, как к массиву, пока ключ - это номер, а не строка. – tsturzl

Смежные вопросы