Pode ser necessário verificar o status de presença do usuário (Online/Ausente/Ocupado) no Microsoft Teams antes de executar uma ação específica para alguns scripts de integração. Vamos dar uma olhada em como obter e alterar o status de um usuário no Teams usando a API Microsoft Graph e o PowerShell.
Conteúdo:
- Obtenha o status de presença do usuário do Teams via PowerShell
- Como alterar o status de presença das equipes do PowerShell
Obtenha o status de presença do usuário do Teams via PowerShell
Se o Microsoft. Gráfico módulo estiver instalado em seu computador, conecte-se ao seu locatário usando sua conta:
Connect-MgGraph -Scopes Presence.Read.All, User.Read.All
Install-Module Microsoft.Graph -Scope AllUsers
Especifique o UPN do usuário cujo status você deseja obter:
$TeamsUser = Get-MGUser -Userid [email protected]
Get-MgCommunicationPresence -PresenceId $TeamsUser.Id | select Activity, Availability
![Obtenha o status de presença online de usuários do MS Teams com PowerShell](/f/5f1ccd27ff6c98ef71976511f27bc13c.png)
Status de presença disponíveis:
- Disponibilidade: Disponível, Ocupado, Ausente, Off-line
- Atividade: Disponível, InACall, DoNotDisturb, InAConferenceCall, Ausente, OffWork, BeRightBack
Você pode listar os status de presença do Teams para todos os usuários do locatário:
$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.
![Listar o status de disponibilidade do Teams para todos os usuários locatários](/f/67da0cb859e6523f4623abcc27f56d07.png)
Se você deseja obter o status de um usuário no Teams a partir de um script, crie um novo aplicativo (Azure AD -> Registro do aplicativo) e delegue Presence.ReadWrite.All
permissão para isso (ou Presence.Read
e Present.Read.All
permissões ao executar um aplicativo como usuário).
Conecte-se ao seu locatário e receba um 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
Ao acessar o Azure via API, você deve fornecer um ID de usuário (ObjectId, User Object GUID) em vez de NomePrincipaldoUsuário (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
Como alterar o status de presença das equipes do PowerShell
Você pode usar o PowerShell e a API Graph para alterar o status de presença de um usuário no Teams. Conecte-se ao Azure usando a API Graph conforme mostrado acima.
Use o script a seguir para alterar o status de um usuário por 1 hora (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"
Verifique se o status do usuário no Teams mudou:
Get-MgCommunicationPresence -PresenceId $UserId
![PowerShell: atualize o status de presença do usuário do Teams](/f/88d53600913cd985372b0826bde3a22f.png)