Twilio Video API возвращает файл MKV в виде строки в ответ на запись

У меня проблема с получением записей в Twilio Video API.

Я использую С# в бэкэнде и успешно получил записи комнат.

 const string apiKeySid = "SKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
                const string apiKeySecret = "byt32MXXXXXXXXXXXXXXXXXXXXX";

                TwilioClient.Init(apiKeySid, apiKeySecret);

                string recordingSid = sample.RecordingSid;
                var uri = $"https://video.twilio.com/v1/Recordings/{recordingSid}/Media";
                var response = TwilioClient.GetRestClient().Request(new Request(HttpMethod.Get, uri));

                var mediaLocation =JsonConvert.DeserializeObject<Dictionary<string, string>>(response.Content)["location"];
                using (var webClient = new System.Net.WebClient())
                {
                    string mediaContent = webClient.DownloadString(uri);
                }

Это мой код для загрузки записи с серверов Twilio.

Ответ

Content: "\u001aEߣ\u0001\0\0\0\0\0\0\u0014B��matroska\0B��\u0002B��...." A very long text which I think is an mkv file
StatusCode: OK

ОШИБКА

var mediaLocation =JsonConvert.DeserializeObject<Dictionary<string, string>>(response.Content)["location"];

Поскольку содержимое содержит тарабарщину, код не работает, начиная с этой строки.

Что я пробовал 1) Попытался скопировать содержимое, вставить его в Блокнот, а затем сохранить файл в Unicode, а также в коде ASCII, изменить формат файла на «.mkv» и попробуй запустить. P.S. Не работает. 2) Пытался загрузить файл (как из моего кода C #, так и вручную в браузере) из "https://video.twilio.com/v1/Recordings/{recordingSid}/Media", выдает ошибку «Требуется аутентификация» 3) Пытался изо всех сил преобразовать строку в mkv, но безрезультатно.

Что говорится в официальной документации

{
"location": "https://com.twilio.dev-us1.video.recording.s3.amazonaws.com/RTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

} Это не то, что возвращает API, возможно, они недавно изменили его, но им следует обновить его в своей документации.

В чем мне нужна помощь. Если вы уже использовали Twilio Video API, не могли бы вы рассказать мне, как я могу получить запись с сервера Twilio, предполагая, что у меня есть SID комнаты и SID записи.

Заранее спасибо :)


person Umer Khalid    schedule 19.01.2018    source источник
comment
Евангелист разработчиков Twilio здесь. Это похоже на то, что что-то не так в документации или неправильно в API. В любом случае, я рекомендую вам отправить всю эту информацию в службу поддержки Twilio, которая предупредит вас. ответственная команда и получить ответ для вас.   -  person philnash    schedule 22.01.2018
comment
Возникла проблема с API, поскольку запрос GET к video.twilio.com/v1/Recordings{recordingSid}/Media должен перезапустить расположение контента, а не сам контент, как указано в документации по API.   -  person Umer Khalid    schedule 22.01.2018


Ответы (1)


Я решил это сам. Когда я пишу этот URL-адрес в браузере https://video.twilio.com/v1/Recordings/{recordingSid}/Media и пишу Account_Sid в качестве имени пользователя и Account_Secret в качестве пароля, это позволяет мне напрямую загрузить файл. Итак, что я сделал, так это то, что каждый раз, когда я хочу получить доступ к записи, я отправляю запрос GET на этот URL-адрес https://video.twilio.com/v1/Recordings/{recordingSid}/Media вместе с идентификатором учетной записи и секретом учетной записи, и это позволяет мне напрямую загружать запись.

Я публикую этот ответ для всех, кто столкнется с этой же проблемой в будущем.

person Umer Khalid    schedule 22.01.2018
comment
Я гоняюсь за этим внутри, и мы пытаемся выяснить, неверна ли библиотека C# (потому что она следует перенаправлению и получает файл) или документация неверна. Дам знать, когда исправят! - person philnash; 22.01.2018