如何使用 MS Graph API 和团队轮班获取特定用户的轮班

How do I get shifts for a specific user using MSGraph API and Shfits for Teams

我正在尝试获取给定日期内用户的班次。我已经在给定的日期开始工作,但我无法让特定的用户部分开始工作。

    private async Task<IEnumerable<Shift>> GetShiftsAsync(string start, string end, string userId)
    {
        var shifts = await _graphClient.Teams[TEAMID].Schedule.Shifts.Request()
            .Filter($"contains(userId,{userId})")
           .GetAsync();
        return shifts;
    }

这会导致“无效的过滤器子句”的错误请求

fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
  An unhandled exception has occurred while executing the request.
  Status Code: BadRequest
  Microsoft.Graph.ServiceException: Code: BadRequest
  Message: Invalid filter clause

我也试过了

Filter($"userId eq {userId}")

结果相同

这个link可能会有所帮助: https://docs.microsoft.com/en-us/graph/query-parameters#filter-parameter

我通常构建一个 filterString。也许你可以试试下面的方法。

var filterString = $"filter(userId, '{userId}')";

private async Task<IEnumerable<Shift>> GetShiftsAsync(string start, string end, string userId)
    {
        var shifts = await _graphClient.Teams[TEAMID].Schedule.Shifts.Request()
            .Filter(filterString)
           .GetAsync();
        return shifts;
    }