Automatisation de la création d'équipes Teams
Bonjour à tous,
Pour le compte de mon entreprise, je dois automatiser la création d'une équipe Teams dès lors qu'un nouveau client est enregistré. Naturellement, je me suis orienté vers de la prog afin de réaliser ce projet et jusqu'à présent, je suis bloqué à l'étape de création de l'équipe. Je passe par l'envoie d'une requête HTTP à Microsoft Graph, qui devrait normalement me permettre la création d'une équipe mais celle-ci refuse de s'exécuter. Je vous mets ci-dessous mon code avec l'erreur que j'obtiens :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import json, requests
client_id = "***"
client_secret = "***"
tenant_id = "***"
url_creation = "https://graph.microsoft.com/v1.0/teams"
user_id = "***"
def get_access_token():
access_token = ""
token_url = "https://login.microsoftonline.com/{}/oauth2/v2.0/token".format(tenant_id)
token_data = {
"grant_type": "client_credentials",
"client_id": client_id,
"client_secret": client_secret,
"scope": "https://graph.microsoft.com/.default"
}
token_response = requests.post(token_url, data=token_data)
if token_response.status_code != 200:
print(f"La connexion aux serveurs Microsoft a échoué avec le code d'erreur {token_response.status_code}.")
else:
access_token = token_response.json()["access_token"]
print("La connexion aux serveurs Microsoft est un franc succès.")
return access_token
access_token = get_access_token()
with open("resultat_liste_equipes_clients.json", "r") as f:
data = json.load(f)
ids_equipes = {d["name"]: d["id"] for d in data["value"]}
noms_equipes_existantes = list(ids_equipes.keys())
with open("test.json", "r") as e:
noms_nouvelles_equipes = json.load(e)
for equipe in noms_nouvelles_equipes["value"]:
nom_equipe = equipe["name"]
if nom_equipe not in noms_equipes_existantes:
equipe_data = {
"template@odata.bind": "https://graph.microsoft.com/v1.0/teamsTemplates('***')?$locale=fr-fr",
"displayName": nom_equipe,
"description": "Description de l'équipe",
"members": [
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": [
"owner"
],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('***@***')"
}
]
}
headers = {'Authorization': 'Bearer ' + access_token, 'Content-Type': 'application/json'}
equipe_response = requests.post(url_creation, json=equipe_data, headers=headers)
if equipe_response.status_code != 201:
print(f"Impossible de créer l'équipe {nom_equipe} dans Teams avec le code d'erreur {equipe_response.status_code}.")
print(f"Erreur : {equipe_response.text}")
else:
print(f"L'équipe {nom_equipe} a été créée avec succès dans Teams.") |
NB : normalement, mes id de connexion ne sont pas stockés directement dans mon script mais pour un soucis de compréhension, je les ai indiqué.
En exécutant ce code, j'obtiens cette erreur :
La connexion aux serveurs Microsoft est un franc succès.
Impossible de créer l'équipe *** dans Teams avec le code d'erreur 400.
Erreur : (GPT m'a décris l'erreur) L'erreur "BadRequest" avec le code d'erreur "400" indique que la requête envoyée à l'API de Microsoft Teams est mal formée ou invalide. Plus précisément, l'erreur indique que le modèle d'équipe spécifié avec l'ID "***" et la localisation "fr-FR" est introuvable.
Le problème est que j'ai obtenu cet id de modèle d'équipe avec une autre requête "https://graph.microsoft.com/beta/teamwork/teamTemplates".
Si jamais vous connaissez d'autres moyens ou si vous avez la solution à mes problèmes, je prends tout ce qui passe !