Как мне получить все команды в MS Graph C#?

Я успешно создал Команду в группе, теперь мне нужно перебирать Команды, чтобы я мог получить их имена и идентификаторы.

Я пробовал следующий код, но безуспешно.

IGraphServiceTeamsCollectionPage teams = graphServiceClient
    .Teams
    .Request()
    .GetAsync()
    .Result;

foreach (Team team in teams)
{
    Console.WriteLine(team.Id);
}

я получил

Code: UnknownError
Message: 
{
    "message":"No HTTP resource was found that matches the request URI 'https://api.teams.skype.com/v1.0/teams'."
}

Я также попытался сделать то же самое против групп без успеха:

var groups = await graphServiceClient.Groups
    .Request()
    .GetAsync();

foreach (var group in groups)
{
    Console.WriteLine(group.DisplayName);
    Console.WriteLine(group.Team.Id);
}

Теперь я получаю displayName группы, но при попытке доступа к идентификатору команды группы я получаю

В экземпляре объекта не задана ссылка на объект.

РЕДАКТИРОВАТЬ:

Я понял, что ID группы = ID команды, однако на прошлой неделе я смог обновить определенную команду с помощью следующей команды:

await graphServiceClient
    .Teams[groupID]
    .Request()
    .UpdateAsync(team3);

но теперь это не работает и говорит:

Не найдена команда с идентификатором группы {9032fa63-50bb-4....}

В PowerShell и Graph Explorer я подтвердил, что идентификатор правильный и, как я уже сказал, он работал в пятницу на прошлой неделе.

2 ответа

Решение

Я использую groupID, который равен teamID.

 var groups = await graphServiceClient.Groups.Request().GetAsync();
 foreach (var group in groups)
 {
   Console.WriteLine(group.DisplayName);
   Console.WriteLine(group.Id);
 }

В дополнение к моему комментарию кажется, что класс PageIterator не работает с возвращаемой коллекцией групп (или я делаю что-то не так, что возможно!). В любом случае этот код работает для получения всех групп с Teams в моей среде, поэтому вы должны иметь возможность передать свойство Id каждой группы в конечную точку Teams в Graph, чтобы продолжить:

      var groups = await client.Groups.Request().Select("id,displayName,resourceProvisioningOptions").Filter("resourceProvisioningOptions/Any(x:x eq 'Team')").GetAsync();
do
{
    foreach(var g in groups)
        {
            Console.WriteLine(g.DisplayName);
            Console.WriteLine(g.Id);
        }
        if(groups.NextPageRequest != null)
        {
            groups = await groups.NextPageRequest.GetAsync();
        }
}
while (groups.NextPageRequest != null);

Обратите внимание, что для фильтрации параметров предоставления ресурсов требуется использовать конечную точку бета-версии в Graph, в настоящее время это недоступно в V1.

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