W przypadku niektórych skryptów integracyjnych może zaistnieć konieczność sprawdzenia statusu obecności użytkownika (Online/Away/Zajęty) w Microsoft Teams przed wykonaniem określonej akcji. Przyjrzyjmy się, jak uzyskać i zmienić status użytkownika w aplikacji Teams przy użyciu interfejsu API Microsoft Graph i programu PowerShell.
Zawartość:
- Uzyskaj status obecności użytkownika Teams za pomocą programu PowerShell
- Jak zmienić status obecności zespołów w programie PowerShell
Uzyskaj status obecności użytkownika Teams za pomocą programu PowerShell
Jeśli Microsoftu. Wykres moduł jest zainstalowany na Twoim komputerze, połącz się z najemcą za pomocą swojego konta:
Connect-MgGraph -Scopes Presence.Read.All, User.Read.All
Install-Module Microsoft.Graph -Scope AllUsers
Podaj nazwę UPN użytkownika, którego status chcesz uzyskać:
$TeamsUser = Get-MGUser -Userid [email protected]
Get-MgCommunicationPresence -PresenceId $TeamsUser.Id | select Activity, Availability
Dostępne statusy obecności:
- Dostępność: Dostępny, Zajęty, Nieobecny, Offline
- Działalność: Dostępne, InACall, Nie przeszkadzać, InAConferenceCall, Poza domem, Poza pracą, BeRightBack
Możesz wyświetlić listę stanów obecności aplikacji Teams dla wszystkich użytkowników w dzierżawie:
$allUserStatus = @() $AllUsers=Get-MGUser. foreach ($TeamUser in $AllUsers) { $TeamsStatus=Get-MgCommunicationPresence -PresenceId $TeamUser.Id $CurUserStatus = New-Object PSObject -Property @{ Activity=$TeamsStatus.Activity Availability=$TeamsStatus.Availability DisplayName=$TeamUser.DisplayName. } $allUserStatus += $CurUserStatus. } $allUserStatus.
Jeśli chcesz uzyskać status użytkownika w Teams ze skryptu, utwórz nową aplikację (Azure AD -> Rejestracja aplikacji) i deleguj Presence.ReadWrite.All
pozwolenie na to (lub Presence.Read
I Present.Read.All
uprawnienia podczas uruchamiania aplikacji jako użytkownik).
Połącz się ze swoim najemcą i uzyskaj token:
$ApplicationID = "1111111-1111-1111-1111-11111111111" $TenatDomainName = "2222222-2222-2222-2222-222222222222" $AccessSecret = "3333333333333333333333333333333333333333333" $Body = @{ Grant_Type = "client_credentials" Scope = "https://graph.microsoft.com/.default" client_Id = $ApplicationID Client_Secret = $AccessSecret. } $ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
Podczas uzyskiwania dostępu do platformy Azure za pośrednictwem interfejsu API należy zamiast tego podać identyfikator użytkownika (ObjectId, identyfikator GUID obiektu użytkownika). Nazwa główna użytkownika (UPN).
$UserId = "111111-2222-3333-4444-555555555" $headers = @{ "Authorization" = "Bearer $($tokenResponse.access_token)" "Content-type" = "application/json" } $ApiUrl = "https://graph.microsoft.com/v1.0/users/$UserId/presence" $Response = Invoke-RestMethod -Method GET -Uri $ApiUrl -ContentType "application\json" -Headers $headers -SkipHeaderValidation. $Response
Jak zmienić status obecności zespołów w programie PowerShell
Możesz użyć programu PowerShell i interfejsu Graph API, aby zmienić stan obecności użytkownika w aplikacji Teams. Połącz się z platformą Azure przy użyciu interfejsu API programu Graph, jak pokazano powyżej.
Użyj poniższego skryptu, aby zmienić status użytkownika na 1 godzinę (PT1H):
$UserId = "111111-2222-3333-4444-555555555" $uri = "https://graph.microsoft.com/beta/users/$userid/presence/setPresence" $body = @" { "sessionId": "$ApplicationID", "availability": "Away", "activity": "Away", "expirationDuration": "PT1H" } "@ Invoke-RestMethod –Uri $uri –Method Post –Body $body –Headers $headers -ContentType "application/json"
Sprawdź, czy status użytkownika w aplikacji Teams uległ zmianie:
Get-MgCommunicationPresence -PresenceId $UserId