Legen Sie den Status der Anwesenheitssitzung eines Benutzers als Anwendung fest.
Anwesenheitssitzungen
Ein Benutzer kann mehrere Anwesenheitssitzungen haben, da sich der Benutzer auf mehreren Teams Clients (Desktop, Mobil und Web) befindet. Jeder Teams-Client verfügt über eine unabhängige Anwesenheitssitzung, und die Anwesenheit des Benutzers ist ein aggregierter Zustand aus allen Sitzungen, die zurückliegen.
Ebenso kann eine Anwendung eine eigene Anwesenheitssitzung für einen Benutzer haben und den Status aktualisieren.
Es folgt die Rangfolge für die Zusammenfassung von Sitzungszuständen:
Vom Benutzer konfigurierte > app-konfiguriert (durch den Benutzer konfigurierter Zustand setzt andere außer Kraft)
Unter app-konfiguriert: DoNotDisturb (derzeit nicht für festgelegte Anwesenheitsinformationen unterstützt) > Beschäftigt > Verfügbar > Abwesend
Timeout, Ablauf und Keep Alive
Bei einer Anwesenheitssitzung kann ein Timeout auftreten und ablaufen, sodass die Anwendung diese API vor dem Timeout aufrufen muss, um den Status für die Sitzung aufrechtzuerhalten. oder vor ablaufen, um die Sitzung aktiv zu halten.
Bei einer Anwesenheitssitzung kann ein Timeout auftreten, wenn die Verfügbarkeit Available und das Timeout 5 Minuten beträgt. Wenn es zu einem Zeitauslass kommt, wird der Anwesenheitszustand phasenweise ausgeblendet. Wenn beispielsweise eine Anwendung die Anwesenheitssitzung als Available/Availablefestlegt, würde sich der Status in 5 Minuten mit dem ersten Timeout ändern Available/AvailableInactive , dann Away/Away in weiteren 5 Minuten mit dem zweiten Timeout.
Der Ablauf einer Anwesenheitssitzung ist mit dem expirationDuration Parameter konfigurierbar. Wenn eine Sitzung abläuft, wird sie zu Offline.
Berechtigungen
Die folgende Berechtigung ist erforderlich, um die API aufzurufen. Weitere Informationen, unter anderem zur Auswahl von Berechtigungen, finden Sie unter Berechtigungen.
Berechtigungstyp
Berechtigungen (von der Berechtigung mit den wenigsten Rechten zu der mit den meisten Rechten)
Delegiert (Geschäfts-, Schul- oder Unikonto)
Presence.ReadWrite
Delegiert (persönliches Microsoft-Konto)
Nicht unterstützt.
Anwendung
Presence.ReadWrite.All
HTTP-Anforderung
POST /users/{userId}/presence/setPresence
Anforderungsheader
Name
Beschreibung
Authorization
Bearer {token}. Erforderlich.
Content-Type
application/json. Erforderlich.
Anforderungstext
Geben Sie im Anforderungstext ein JSON-Objekt mit den folgenden Parametern an.
Parameter
Typ
Beschreibung
Sessionid
Zeichenfolge
Die ID der Anwesenheitssitzung der Anwendung.
availability
Zeichenfolge
Die Basis-Anwesenheitsinformationen.
Aktivität
Zeichenfolge
Die ergänzenden Informationen zur Verfügbarkeit.
expirationDuration
Dauer
Der Ablauf der App-Anwesenheitssitzung. Der Wert wird für Dauer im ISO 8601-Format dargestellt.Wenn nicht angegeben, wird ein Standardmäßiger Ablauf von 5 Minuten angewendet. Der gültige Dauerbereich beträgt 5-240 Minuten (PT5M bis PT4H)
Wichtig
Geben Sie die ID der Anwendung wie sessionId in der Anforderung an.
Unterstützte Kombinationen von availability und activity sind:
availability
Aktivität
Beschreibung
Verfügbar
Verfügbar
Aktualisiert die Anwesenheitssitzung als verfügbar.
Gebucht
InACall
Aktualisiert die Anwesenheitssitzung als beschäftigt, InACall.
Gebucht
InAConferenceCall
Aktualisiert die Anwesenheitssitzung als "Beschäftigt", "InAConferenceCall".
Weg
Weg
Aktualisiert die Anwesenheitssitzung als "Abwesend".
Antwort
Wenn die Methode erfolgreich verläuft, wird der Antwortcode 200 OK zurückgegeben.
Beispiele
Die folgende Anforderung zeigt die Anwendung mit der ID 22553876-f5ab-4529-bffb-cfe50aa89f87 , die ihre Anwesenheitssitzung für den Benutzer fa8bf3dc-eca7-46b7-bad1-db199b62afc3festlegt.
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var sessionId = "22553876-f5ab-4529-bffb-cfe50aa89f87";
var availability = "Available";
var activity = "Available";
var expirationDuration = new Duration("PT1H");
await graphClient.Users["{user-id}"].Presence
.SetPresence(availability,activity,sessionId,expirationDuration)
.Request()
.PostAsync();