GraphAPI Создание нового MSTeam сразу после создания новой группы завершается неудачно с 404 - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу сформировать новый MSTeam из вновь созданной группы.

  • Я создал новый GraphServiceClient
  • Я создал нового AuthProvider
  • Я создал новую группу с клиентом следующим образом:

    graphApplicationClient.groups (). BuildRequest (). Post (group);

Это работает до сих пор. Я получаю объект Group в качестве ответа и могу работать с ним. У него есть Id и т. Д.

Сразу после этого я хочу создать новую команду из этой группы, поэтому я звоню

ITeamRequest iTeamRequest = graphApplicationClient.groups(pGroupId).team().buildRequest();
iTeamRequest.setMaxRetries(3);
iTeamRequest.setDelay(10);
Team newTeam = iTeamRequest.post(team);

, где pGroupId - это Id, полученный от звонка. перед. (В данном случае: «команда» - это новый Team-Object, созданный прямо перед этим вызовом, как в MS-Docs.)

Я знаю предложение из MS-Docs:

Если группа была создана менее чем за 15 минут go, возможно, что командный вызов Create не будет выполнен с кодом ошибки 404 из-за задержек репликации. Рекомендуется повторить попытку создания группового вызова три раза с 10-секундной задержкой между вызовами.

, поэтому я добавил maxRetries и Delay .. Я смотрел это видео:

https://youtu.be/ybGm1qWVi-k?t=650

, в котором два сотрудника MS делают то же самое, что и я ... Чего мне не хватает? Или есть обходной путь для этого?

Это ответ:

404 : Not Found
Strict-Transport-Security : max-age=31536000
Cache-Control : private
x-ms-ags-diagnostic : {"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceC","Ring":"5","ScaleUnit":"002","RoleInstance":"AGSFE_IN_51"}}
client-request-id : b39c16e4-f786-4d42-865e-9f0cf23ed46f
request-id : 07efc77c-02d3-45f7-85ab-6ca2241d1859
Content-Length : 198
Date : Thu, 23 Apr 2020 12:39:30 GMT
Content-Type : application/json
{
  "error": {
    "code": "UnknownError",
    "message": "",
    "innerError": {
      "request-id": "07efc77c-02d3-45f7-85ab-6ca2241d1859",
      "date": "2020-04-23T12:39:30"
    }
  }
}

Он также не работает, если я добавлю больше попыток (10 = Макс) и больше задержки (180 = Макс) ... И в java ..

There is no PUT in Java

С наилучшими пожеланиями

EDIT1: Я пытался сделать это с двумя другими варианты .. сначала с Scribe Java, а затем с обычным httpRequest .. ни один из них не работает. Я делаю это только с GraphExplorer. С другими опциями написано BadRequest, но когда я копирую все, что у меня есть в коде, в GraphExplorer, это работает ... помогите мне: (

EDIT2: у меня есть группа, которая Я был вокруг в течение дня. Из этого я хотел создать новую команду. Тем не менее 404. Not Found. Я попробовал это с GraphAPI и Scribe Java. Ни один из этих вызовов не работает. Отладил, скопировал всю информацию, вставил ее в Почтальон, отлично работает.

1 Ответ

0 голосов
/ 02 мая 2020

Для всех, кто сталкивается с той же проблемой, что и я. GraphAPI предоставляет функцию customRequest (). Я использую тот же токен, тот же URL, те же свойства, но использую customRequest с PUT. Работает ...

CustomRequest<JsonObject> createTeamCustomRequest = graphApplicationClient.customRequest("/groups/" + pGroupId + "/team").buildRequest();
createTeamCustomRequest.setMaxRetries(3);
createTeamCustomRequest.setDelay(10);
JsonObject newTeam = _createTeamInJson();
JsonObject createdTeam = createTeamCustomRequest.put(newTeam);

Это функция _createTeamIn Json. Возвращает то же тело, что и при создании команды с GraphAPI

private JsonObject _createTeamInJson()
  {
    JsonObject teamPayload = new JsonObject();
    JsonObject memberSettings = new JsonObject();
    JsonObject messagingSettings = new JsonObject();
    JsonObject funSettings = new JsonObject();
    memberSettings.addProperty("allowCreateUpdateChannels", true);
    messagingSettings.addProperty("allowUserEditMessages", true);
    messagingSettings.addProperty("allowUserDeleteMessages", true);
    funSettings.addProperty("allowGiphy", true);
    funSettings.addProperty("giphyContentRating", "strict");

    teamPayload.add("memberSettings", memberSettings);
    teamPayload.add("messagingSettings", messagingSettings);
    teamPayload.add("funSettings", funSettings);
    return teamPayload;
  }

. Это неправильное решение, потому что оно должно работать с обычным GraphAPI, поэтому я не отмечаю это как ответ , Но это обходной путь для всех, у кого такая же проблема ..

...