Боты Microsoft - бот-канал Регистрация. Невозможно сохранить записанное видео из Skype в Azure учетной записи хранения - PullRequest
1 голос
/ 10 января 2020

Для приложения чат-бота платформы Microsoft Bot, над которым я работаю, я настроил «Регистрация канала Bot» и разместил его на Azure.

Один из сценариев ios ожидает пользователя записать видео по скайпу и отправить в ответ. У меня есть функция Azure, которая сохраняет записанное видео из Skype в учетную запись хранения Azure.

Проблема, с которой я сталкиваюсь, заключается в том, когда я записываю видео в Skype () с помощью функции обмена видеосообщениями.

Чтобы получить доступ к загруженному видео из Skype, я предоставляю соответствующий токен на предъявителя вместе с вышеупомянутым URL, но не могу получить к нему доступ.

Несмотря на то, что файл загружен из Skype в Очередь (Azure функция Очередь срабатывает), доступ к этому файлу запрещен.

Предполагая, что последние исправления могут помочь, я обновил все ссылки на. NET core 3.0.1 на сегодняшний день. С нетерпением ждем желаемого подхода к решению этой проблемы.

Примечание. Эта проблема возникает только в версии «Skype для рабочего стола».

Ниже приведен блок кода для вашей справки.

private static async Task<HttpResponseMessage> RequestFile(string contentUrl, ILogger logger, string serviceUrl)
{
    var credentials = DIContainer.Instance.GetService<MicrosoftAppCredentials>();
    var token = await credentials.GetTokenAsync();
    using (var connectorClient = new ConnectorClient(new Uri(serviceUrl), credentials.MicrosoftAppId, credentials.MicrosoftAppPassword))
    {
        using (var httpClient = new HttpClient())
        {
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));

            var test = await httpClient.GetAsync(uri, HttpCompletionOption.ResponseContentRead);

            return test;
        }
    }
}

Добавление дополнительных фрагментов кода:

private async Task<(string, string)> TrySaveAndGetContentUrl(IMessageActivity activity, string user)
    {   
        var attachments = activity.Attachments;

        if (attachments?.Any() ?? false)
        {   
            var video = attachments.First();                              
            return (await _attachmentsService.Save(video, user), video.ContentUrl);
        }
        return (null, null);
    }

 ///_attachmentsService.Save method implementation
 public async Task<string> Save(Attachment attachment, string user)
    {
        _logger.LogInformation("Enqueue save command. {@Attachment}", attachment);

        var blobName = $"{user}/{Guid.NewGuid().ToString()}-{attachment.Name}";
        var blob = _cloudBlobContainer.GetBlockBlobReference(blobName);

        await EnqueueSaveCommand(attachment.ContentUrl, blobName, user);

        return blob.Uri.ToString();
    }

Пожалуйста, обратитесь к приведенному ниже блоку кода, чтобы сохранить вложения в Azure blob.

private async Task EnqueueSaveCommand(string contentUrl, string blobName, string user)
    {
        var queue = _queueClient.GetQueueReference(RouteNames.MediaAttachmentQueue); //RouteNames.MediaAttachmentQueue is "media-attachment-queue"
        await queue.CreateIfNotExistsAsync();

        var serializedMessage = JsonConvert.SerializeObject(new SaveMediaAttachmentCommand
        {
            FromUrl = contentUrl,
            AttachmentName = blobName,
            UserName = "userid@gmail.com",               
        });

        var queueMessage = new CloudQueueMessage(serializedMessage);

        await queue.AddMessageAsync(queueMessage);
    }

enter image description here Пожалуйста, предложите.

1 Ответ

0 голосов
/ 15 января 2020

Конфигурация канала Skype содержит следующее сообщение:

С 31 октября 2019 года канал Skype больше не принимает новые запросы на публикацию ботов. Это означает, что вы можете продолжать разрабатывать ботов, используя канал Skype, но ваш бот будет ограничен 100 пользователями. Вы не сможете публиковать sh вашего бота для более широкой аудитории. Текущие боты Skype будут работать без перерыва. Подробнее

Многие функции Skype устарели. Если когда-либо было возможно отправить видео боту через Skype, это может оказаться невозможным. Рекомендуется переключаться на другие каналы, такие как Direct Line и Microsoft Teams.

...