Microsoft Graph — доступ к стенограммам OnlineMeetings — указан неверный формат «application/octet-stream, application/json»

Хорошо, у меня есть следующий код C#, используемый в консольном приложении:

var deviceCodeCredential = new DeviceCodeCredential(new DeviceCodeCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
    ClientId = AzureClientID,
    TenantId = AzureTenantID,
    DeviceCodeCallback = (code, cancellation) =>
    {
        Console.WriteLine(code.Message);
        return Task.FromResult(0);
    }
});

var graphClient = new GraphServiceClient(deviceCodeCredential, 
    new[] { "User.Read", "OnlineMeetingTranscript.Read.All" });  
          
var meeting = await graphClient.Me.OnlineMeetings.GetAsync((requestConfiguration) =>
{
    requestConfiguration.QueryParameters.Filter = "joinWebUrl eq '" + TeamsURL + "'";
});

var transcript = await graphClient.Me.OnlineMeetings[meeting.Value[0].Id].Transcripts.GetAsync();

var transcriptText = await graphClient.Me.OnlineMeetings[meeting.Value[0].Id].Transcripts[transcript.Value[0].Id].Content.GetAsync((requestConfiguration) =>
{
    requestConfiguration.Headers.Add("Content-Type", "text/vtt");
});    

/*
API Docuementation suggests I do this: https://learn.microsoft.com/en-us/graph/api/calltranscript-get?view=graph-rest-1.0&tabs=csharp#example-2-get-a-calltranscript-content

However the "QueryParameters" returned is of type "DefaultQueryParameters"(which appears to be empty), so the for "Format" property does exist and the code won't build

var transcriptText = await graphClient.Me.OnlineMeetings[meeting.Value[0].Id].Transcripts[transcript.Value[0].Id].Content.GetAsync((requestConfiguration) =>
{
    requestConfiguration.QueryParameters.Format = "text/vtt";
});    
*/

Однако когда я запускаю это вместо получения стенограммы, я получаю следующую ошибку:

Указан неверный формат «application/octet-stream, application/json».

Как мне обойти это, как я могу дать указание графическому API ожидать вывода «приложения/октетного потока» от API.

Подробные пошаговые инструкции см. в следующем документе: Learn.microsoft.com/en-us/graph/api/…

Nivedipa-MSFT 18.06.2024 07:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первоначально я тоже получил ту же ошибку, когда запустил ваш код в своей среде, чтобы получить содержимое расшифровки звонка:

Чтобы устранить эту ошибку, используйте приведенный ниже измененный код, который отображает содержимое стенограммы онлайн-совещания в консоли следующим образом:

using System.Text;
using Azure.Identity;
using Microsoft.Graph;
using Microsoft.Graph.Models.ODataErrors;

namespace MSOnlineMeeting
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var scopes = new[] { "User.Read", "OnlineMeetingTranscript.Read.All", "OnlineMeetings.Read" };
            var AzureTenantID = "tenantId";
            var AzureClientID = "appId";

            var options = new DeviceCodeCredentialOptions
            {
                AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
                ClientId = AzureClientID,
                TenantId = AzureTenantID,
                DeviceCodeCallback = (code, cancellation) =>
                {
                    Console.WriteLine(code.Message);
                    return Task.FromResult(0);
                },
            };

            var deviceCodeCredential = new DeviceCodeCredential(options);
            var graphClient = new GraphServiceClient(deviceCodeCredential, scopes);

            try
            {
                var meetings = await graphClient.Me.OnlineMeetings.GetAsync((requestConfiguration) =>
                {
                    requestConfiguration.QueryParameters.Filter = "joinWebUrl eq 'URL'";
                });

                if (meetings.Value.Count == 0)
                {
                    Console.WriteLine("No meetings found.");
                    return;
                }

                var meetingId = meetings.Value[0].Id;

                var transcripts = await graphClient.Me.OnlineMeetings[meetingId].Transcripts.GetAsync();

                if (transcripts.Value.Count == 0)
                {
                    Console.WriteLine("No transcripts found.");
                    return;
                }

                var transcriptId = transcripts.Value[0].Id;

                var transcriptContentStream = await graphClient.Me.OnlineMeetings[meetingId].Transcripts[transcriptId].Content.GetAsync((requestConfiguration) =>
                {
                    requestConfiguration.Headers.Add("Accept", "text/vtt");
                });

                using (var memoryStream = new MemoryStream())
                {
                    await transcriptContentStream.CopyToAsync(memoryStream);
                    string transcriptText = Encoding.UTF8.GetString(memoryStream.ToArray());
                    Console.WriteLine(transcriptText);
                }
            }
            catch (ODataError odataError)
            {
                Console.WriteLine($"Error Code: {odataError.Error.Code}");
                Console.WriteLine($"Error Message: {odataError.Error.Message}");
            }
        }
    }
}

Ответ:

Ссылка: Получить транскрипт звонка - Microsoft Graph v1.0

Другие вопросы по теме