Как мне получить все команды в 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.