在 Twilio 房间中下载 Twilio 录制时出现问题

Posted

技术标签:

【中文标题】在 Twilio 房间中下载 Twilio 录制时出现问题【英文标题】:Issue downloading Twilio Recording in Twilio Rooms 【发布时间】:2018-03-17 05:25:45 【问题描述】:

我有一些代码可以从 Twilio 下载录音

getRecordingMedia: function (recordingId) 
    var client = new Twilio(config.twillio.apiKey, config.twillio.apiSecret,  accountSid: config.twillio.accountId );
    var uri = `https://video.twilio.com/v1/Recordings/$recordingId/Media`;
    var response = client.request( method: "POST", uri: uri );
    var mediaLocation = JSON.parse(response.body).location;
    request.get(mediaLocation, (err, res, media) => 
        return media;
    );

我收到以下错误:

SyntaxError: 位置 0 处 JSON 中的意外标记 u

我查看了响应对象,它实际上是一个承诺。因此,似乎文档不正确,因为它没有处理承诺“then()”

我继续修改代码以使用承诺

  var response = client.request( method: "POST", uri: uri ).then((object) => console.log(object););

我实际上记录了一个错误

状态码:405, body: '"code": 20004, "message": "Method not allowed", "more_info": "https://www.twilio.com/docs/errors/20004", "status": 405'

我查看了引用链接上的文档,但对我没有多大帮助。

另外,如果我在浏览器中打开 url https://video.twilio.com/v1/Recordings/$recordingId/Media 并输入凭据,我将获得录音。

因此,需要帮助来确定文档是否不正确(关于承诺 - https://www.twilio.com/docs/api/video/recordings-resource#code-retrieve-a-recording)以及为什么我收到代码 20004 的错误。

谢谢

【问题讨论】:

【参考方案1】:

错误链接中的解释说明了一切。您使用了错误的请求方法。

文档说:

HTTP GET 到 /Media 子资源

HTTP POST 不支持。

你的代码说:

var response = client.request( method: "POST", uri: uri );

所以它当然可以在您的浏览器中使用,因为浏览器会发出 GET 请求...

【讨论】:

谢谢,代码示例实际上显示为 POST,我使用 GET 让它工作,当然这似乎是代码示例的偏差,因为它返回一个位置值,它不是重定向。执行 GET 会进行重定向,您需要使用 redirect_to 值。 啊,是的,甚至没有看代码。我不是第一次看到他们的例子与他们的文档相矛盾。很高兴你把它整理好了。 这里是 Twilio 开发人员传道者。我们一直在努力改进我们的文档,很抱歉这个文档被破坏了两次。我现在要提交一个拉取请求来更新这个。

以上是关于在 Twilio 房间中下载 Twilio 录制时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Twilio留下语音邮件?

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

在 twilio mp3 录制 url 上进行范围请求时,接受范围设置为无

Twilio - 如何将现有呼叫移至会议

在 android 5+ 中延迟 10 秒的 Twilio 视频聊天

音频会话中断后恢复 twilio 通话