我有一些代码可以从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);});
我确实记录了一个错误
{statusCode:405, body:'{“code”:20004,“message”:“Method not allowed”,“more_info”:“https://www.twilio.com/docs/errors/20004”,“status”:405}'}
我查看了推荐链接上的文档,但它对我没什么帮助。
此外,如果我在浏览器中打开网址https://video.twilio.com/v1/Recordings/${recordingId}/Media
并输入凭据,我就会进行录制。
所以,需要帮助弄清楚文档是否不正确(关于promise - https://www.twilio.com/docs/api/video/recordings-resource#code-retrieve-a-recording)以及为什么我得到代码20004的错误。
由于
答案 0 :(得分:3)
错误链接中的解释说明了一切。您使用的是错误的请求方法。
文档说:
HTTP GET到/ Media子资源
HTTP POST 不支持。
您的代码说:
var response = client.request({ method: "POST", uri: uri });
当然,它可以在您的浏览器中运行,因为浏览器会发出GET请求...