Issue downloading Twilio Recording in Twilio Rooms

Viewed 211

I have some code to download a recording from 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;
    });
}

I get the following error:

SyntaxError: Unexpected token u in JSON at position 0

I looked at the response object and its actually a promise. So, it seems like the documentation is incorrect in the sense that it doesn't handle the promise "then()"

I went ahead and changed the code to use the promise

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

And I actually have an error logged

{ statusCode: 405, body: '{"code": 20004, "message": "Method not allowed", "more_info": "https://www.twilio.com/docs/errors/20004", "status": 405}' }

I looked at the documentation on the referred link, but it didn't help me much.

Additionally If I open the url https://video.twilio.com/v1/Recordings/${recordingId}/Media in my browser and enter the credentials I get the recording.

So, need help in figuring out if the documentation is incorrect (as to the promise - https://www.twilio.com/docs/api/video/recordings-resource#code-retrieve-a-recording) and why Im getting the error with code 20004.

Thanks

1 Answers

The explaination in the error link says it all. You are using the wrong request method.

The documentation says:

HTTP GET to /Media subresource

HTTP POST Not supported.

Your code says:

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

So of course it works in your browser, as browsers make GET requests...

Related