从图表下载使用情况报告 API

Downloading Usage Reports From Graph API

作为我正在处理的 C# 应用程序的一部分,我需要包含一个选项来下载过去 7 天的 Teams 使用情况报告。我编写了以下代码来尝试从 Graph 获取数据:

internal static async Task<string> DownloadUsageReport(AuthenticationResult token)
{
    try
    {
        var client = new GraphServiceClient(new DelegateAuthenticationProvider(async (requestMessage) =>
        {
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
        }));
        var result = await client.Reports.GetTeamsUserActivityUserDetail("D7").Request().GetAsync();
        string reportPath = $"{System.IO.Path.GetTempFileName()}.csv";
        using (var fStream = System.IO.File.OpenWrite(reportPath))
        {
            result.Content.CopyTo(fStream);
        }
        return reportPath;
    }
    catch(Exception ex)
    {
        // some logging
        return string.Empty;
    }
}

想法是它应该将输出保存到计算机上的 CSV 文件中,如果成功 return 文件路径到调用方法。但是,当它运行时代码失败,我从 Graph 收到以下异常消息:

Unexpected character encountered while parsing value: R. Path '', line 0, position 0.

我已经搜索了错误消息,但我发现的所有内容都与解析 JSON 有关,我不想这样做。有没有其他人在从 Graph 获取使用报告时遇到过这个问题,如果遇到过,您有什么建议吗?提前谢谢你。

看起来像是 Microsoft Graph Client Library for .NET 中的错误,反序列化响应负载时发生异常。

你能试试这个解决方法吗?

var message = client.Reports.GetTeamsUserActivityUserDetail("D7").Request().GetHttpRequestMessage();
var response = await client.HttpProvider.SendAsync(message); 
// response content should be csv
var content = await response.Content.ReadAsStringAsync();