给定录制SID,如何将录制文件下载到本地驱动器(使用Twilio节点帮助程序库)?

时间:2015-01-08 22:45:23

标签: node.js twilio helper

我正在使用Twilio Node Helper Library拨打电话并进行录制。

根据API link,GET应该返回一个WAV文件,但在我的情况下,它只返回带有记录元数据的json。

这就是我写的:

twilioClient = require('twilio')(config.twilio.acct_sid, config.twilio.auth_token)
var request = twilioClient.recordings('RE01234567890123456789012345678901')
                           get(function (err, recording){ // <- this "recording" is JSON

如果我将'.mp3'添加到SID的末尾并不重要,我总是得到一个JSON。

理想情况下,我想写下这样的内容:

var file = fs.createWriteStream('/Users/yasemin/Desktop/rec.mp3');
twilioClient.recordings('RE01234567890123456789012345678901')
    .get(function (err, recording) {
      if(!err){ recording.pipe(file); }});

谢谢!

2 个答案:

答案 0 :(得分:1)

TLDR:Node Helper Library目前还没有重新编码文件下载功能。

这是Twilio支持的回复:

  

查看我们门户网站上的文档,您当然是   正确,可以通过API调用下载.wav或.mp3。   但是,从我可以看到的节点示例代码:

     

https://www.twilio.com/user/account/developer-tools/api-explorer/recording

     

来自Twilio-Node开发人员的文档:

     

http://twilio.github.io/twilio-node/#recordings

     

在我看来,助手库实际上并不支持直接   下载,只查看录制数据。你可以下载   应用程序通过HTTP调用,如原始文档链接中所示   您在Stackoverflow问题上注意到了。如果您需要帮助,请告诉我   那个。

     

与此同时,我已经联系了图书馆的作者   如果这是设计或要添加到库中的功能。它&#39; S   当然是开源的,所以你可以自己动手并添加它   你喜欢!

答案 1 :(得分:1)

我遇到过这个并且必须开发自己的代码来处理这个问题。

以下是我在下面提出的代码

con.on('getvmx', function(data){

    comModel.find({_id: data.id}, function(err, results){
      var https = require('https');
      var options = {
        host: 'api.twilio.com',
        port: 443,
        path: '/2010-04-01/Accounts/' + sid + '/Recordings/'+ results[0].sid  + '.mp3',
        method: 'GET',
        auth: sid + ":" + auth,
        agent: false
      };
      var req = https.request(options, function(res) {
        res.setEncoding('binary');
        var mp3data = '';
        res.on('data', function (chunk) {
           mp3data += chunk;
        });

        res.on('end', function(){
          try{
              var fileName = "/var/www/tcc/public/vm/" + results[0].sid + '.mp3';
              fs.writeFile(fileName, mp3data, 'binary', function(err){
                if(err){
                  return console.log(err);
                }else{
                  console.log("File Saved");
                  con.emit('vmload', results);
                }
              });
            }catch(err){
            console.log(err.message);
          }
        });

      });
      req.end();
      console.log(results);

      //load all messages
      //load line from reach message
    });
  });