Poate fi necesar să verificați starea prezenței utilizatorului (Online/Away/Ocupat) în Microsoft Teams înainte de a efectua o anumită acțiune pentru unele scripturi de integrare. Să aruncăm o privire la cum să obțineți și să modificați starea unui utilizator în Teams folosind API-ul Microsoft Graph și PowerShell.
Continut:
- Obțineți starea prezenței utilizatorilor Teams prin PowerShell
- Cum se schimbă starea prezenței echipelor din PowerShell
Obțineți starea prezenței utilizatorilor Teams prin PowerShell
DacăMicrosoft.Graphmodulul este instalat pe computer, conectați-vă la chiriaș folosind contul dvs.:
Connect-MgGraph -Scopes Presence.Read.All,User.Read.All
Dacă Microsoft.Graph nu este instalat, îl puteți instala după cum urmează:
Install-Module Microsoft.Graph -Scope AllUsers
Specificați UPN-ul utilizatorului a cărui stare doriți să obțineți:
$TeamsUser = Get-MGUser -Userid [email protected]
Get-MgCommunicationPresence -PresenceId $TeamsUser.Id | select Activity, Availability


Stări de prezență disponibile:
LEGATE:Cum se schimbă fundalul MS Teams
- Disponibilitate: Disponibil, Ocupat, Deplasat, Offline
- Activitate: Disponibil, InACall, DoNotDisturb, InAConferenceCall, Away, OffWork, BeRightBack
Puteți lista stările de prezență Teams pentru toți utilizatorii din chiriaș:
$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


Dacă doriți să obțineți un statut de utilizator în Teams dintr-un script, creați o nouă aplicație (Azure AD -> Înregistrare aplicație) și delegațiPresence.ReadWrite.Allpermisiunea acestuia (sauPresence.ReadşiPresent.Read.Allpermisiuni atunci când rulați o aplicație ca utilizator).
Conectați-vă la chiriaș și obțineți un simbol:
$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
Aflați mai multe despre cum să accesați Azure din PowerShell prin Microsoft Graph API.
Când accesați Azure prin API, trebuie să furnizați un ID de utilizator (ObjectId, User Object GUID) în loc de UserPrincipalName (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
De asemenea, puteți utiliza această aplicație Azure pentru a citi sau a trimite un mesaj către chatul Teams folosind PowerShell.
Puteți folosi PowerShell și API-ul Graph pentru a modifica starea de prezență a unui utilizator în Teams. Conectați-vă la Azure folosind API-ul Graph, așa cum se arată mai sus.
Utilizați următorul script pentru a schimba starea unui utilizator timp de 1 oră (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"
Verificați dacă starea utilizatorului în Teams sa schimbat:
Get-MgCommunicationPresence -PresenceId $UserId















