Може знадобитися перевірити стан присутності користувача (в мережі/відсутній/зайнятий) у Microsoft Teams перед виконанням певної дії для деяких сценаріїв інтеграції. Давайте розглянемо, як отримати та змінити статус користувача в Teams за допомогою API Microsoft Graph і PowerShell.
Зміст:
- Отримайте статус присутності користувача Teams через PowerShell
- Як змінити статус присутності команд за допомогою PowerShell
Отримайте статус присутності користувача Teams через PowerShell
Якщо Microsoft. Графік модуль встановлено на вашому комп’ютері, підключіться до свого клієнта за допомогою свого облікового запису:
Connect-MgGraph -Scopes Presence.Read.All, User.Read.All
Install-Module Microsoft.Graph -Scope AllUsers
Вкажіть UPN користувача, статус якого ви хочете отримати:
$TeamsUser = Get-MGUser -Userid [email protected]
Get-MgCommunicationPresence -PresenceId $TeamsUser.Id | select Activity, Availability
Доступні статуси присутності:
- Доступність: Доступний, Зайнятий, Не вдома, Офлайн
- діяльність: Доступний, InACall, DoNotDisturb, InAConferenceCall, Away, OffWork, BeRightBack
Ви можете перерахувати статуси присутності Teams для всіх користувачів у клієнті:
$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.
Якщо ви хочете отримати статус користувача в Teams зі сценарію, створіть нову програму (Azure AD -> Реєстрація програми) і делегуйте Presence.ReadWrite.All
дозвіл на це (або Presence.Read
і Present.Read.All
дозволи під час запуску програми від імені користувача).
Підключіться до свого орендаря та отримайте маркер:
$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
Під час доступу до Azure через API ви повинні надати ідентифікатор користувача (ObjectId, User Object GUID) замість UserPrincipalName (УПН).
$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
Як змінити статус присутності команд за допомогою PowerShell
Ви можете використовувати PowerShell і Graph API, щоб змінити статус присутності користувача в Teams. Підключіться до Azure за допомогою Graph API, як показано вище.
Використовуйте наступний сценарій, щоб змінити статус користувача на 1 годину (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"
Перевірте, чи змінився статус користувача в Teams:
Get-MgCommunicationPresence -PresenceId $UserId