Aller au contenu principal

Meeting, Teams et Graph

Utilisation de Graph

Graph API possède de nombreuses fonctionnalités et un très grand nombre de "endpoints" pouvant vous fournir des données en tout genre concernant votre organisation.

Graph Explorer vous permet d'effectuer des appels directement depuis le navigateur:

Graph Explorer | Try Microsoft Graph APIs - Microsoft Graph

Pour obtenir les données de Presence de votre organisation, il faut tout d'abord connaître les ID Microsoft des personnes présentes au sein de votre organisation.

Les ID Microsoft se présentent sous la forme d' UUID comme ceci : 438f6dae-509e-4da2-bbb1-dc5a1697147f

Pour obtenir les Presences des utilisateurs, nous pouvons faire un appel à l'endpoint /users/ de Graph, pour obtenir les données des users, et ensuite utiliser leurs UUID pour utiliser l'endpoint Presence.

Présence

L'endpoint Presence pour obtenir la présence d'un seul utilisateur est le suivant:

GET: GRAPH_URL/beta/users/{user-id}/presence

{user-id} = UUID Microsoft

GET: GRAPH_URL/beta/users/cb4bff89-8832-4c5f-a1ad-15efc6e8f203/presence donnera donc ceci:

{
"id": "cb4bff89-8832-4c5f-a1ad-15efc6e8f203",
"availability": "Available",
"activity": "Available",
"statusMessage": null,
"outOfOfficeSettings": {
"message": null,
"isOutOfOffice": false
}
}

L'user est En ligne (Available), et n'a pas configuré de message d'absence.

Plusieurs Utilisateurs

Pour obtenir la Presence de plusieurs utilisateurs, inutile de boucler sur les users et d'appeler l'endpoint à chaque fois (les performances se dégradent assez vite).

Il existe un endpoint spécial:

POST: GRAPH_URL/beta/communications/getPresencesByUserId

Il vous suffira de poster un JSON contenant les UUID Microsoft de vos utilisateurs, la réponse se présentera comme suit:

....
{
"id": "7bc1614e-f552-4167-91c2-7fe83a783b64",
"availability": "Offline",
"activity": "Offline",
"statusMessage": null,
"outOfOfficeSettings": {
"message": null,
"isOutOfOffice": false
}
},
{
"id": "0b4f2b85-4788-42a3-98bf-2ea289e66ed5",
"availability": "Offline",
"activity": "Offline",
"statusMessage": null,
"outOfOfficeSettings": {
"message": null,
"isOutOfOffice": false
}
},
....