Как добавить членов команды в MS Team с помощью Graph API? - PullRequest
0 голосов
/ 13 мая 2018

Я использую Microsoft Graph API для создания команды и добавления членов команды в MS Teams.Я следую этой документации для того же:

Вот что я делаю для достижения общего поведения:

  1. Создайте группу Office 365.Здесь нет проблем.
  2. Создайте MS Team в группе, созданной на шаге 1. Это также отлично работает.
  3. Добавление участников в группу Office 365, созданную на шаге 1. Работает хорошо.
  4. Добавление тех же участников, что и членов команды в MS Team, созданной на шаге 2. Не работает.

Я использую приведенный ниже код для добавления членов команды:

public static void AddMemberToTeam(string userId, string groupId) 
{
            var endpoint = $"{GRAPH_ROOT_URI}groups/{groupId}/members/$ref";
        var content = new Member { ODataId = $"{GRAPH_ROOT_URI}directoryObjects/{userId}" };
            var request = new HttpRequestMessage(HttpMethod.Post, endpoint);
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", TOKEN);
            request.Content = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json");
            var client = new HttpClient();
            var response = client.SendAsync(request).Result;
}

Несмотря на то, что ответ, полученный от последнего утверждения, соответствует документации (204 Нет содержимого), участники не добавляются в группу.Я не нахожу много помощи в сообществе по API Ms Teams graph.

Документация для добавления членов команды:

PS: я использую учетную запись разработчика Office 365. Я предоставил все необходимые разрешения пользователю-администратору.

1 Ответ

0 голосов
/ 14 мая 2018

Вы получаете Not Found ошибку, потому что в Json Payload вы передаете ODataId, где, как и ожидал API, это будет @ odata.id.

Вот два возможных решения:

  1. Обновите содержимое до следующего:

    var contentJSON = $"{{ \"@odata.id\": \"https://graph.microsoft.com/beta/directoryObjects/{userId}\" }}";
    request.Content = new StringContent(contentJSON, Encoding.UTF8, "application/json");
    
  2. Вы можете обновить свой набор классов @ odata.id как имя свойства Json:

        class Member
    {
        [JsonProperty("@odata.id")]
        public string ODataId { get; set; }
    }
    
...