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

Posted

技术标签:

【中文标题】给定一个录制 SID,我如何将录制文件下载到本地驱动器(使用 Twilio 节点帮助程序库)?【英文标题】:Given a recording SID, how can I download the recording file to local drive (using Twilio node helper library)? 【发布时间】:2015-03-07 04:54:14 【问题描述】:

我正在使用 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

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

理想情况下我想写这样的东西:

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

谢谢!

【问题讨论】:

【参考方案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
    );
  );

【讨论】:

【参考方案2】:

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

这是来自 Twilio 支持的回复:

查看我们门户网站上的文档,您肯定是 正确,可以通过 API 调用下载 .wav 或 .mp3。 但是,从我在这里看到的 Node 示例代码中可以看到:

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

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

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

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

与此同时,我已经联系了该库的作者以查看 如果这是设计使然,或者是要添加到库中的功能。它是 当然是开源的,所以你可以自己拉动并添加它,如果 你喜欢!

【讨论】:

以上是关于给定一个录制 SID,我如何将录制文件下载到本地驱动器(使用 Twilio 节点帮助程序库)?的主要内容,如果未能解决你的问题,请参考以下文章

如何快速录制带有特定阈值过滤器的音频

在 docker 容器中录制本地音频

如何使用附加模式将音频录制到现有的音频文件中?

将音频录制为 Mp3

如何将录制的视频保存到phonegap中的指定文件

如何保存录制的音频iOS?