@ -1,18 +1,18 @@
<#
. NOTES
Name : Get-TeamsStatus . ps1
Author : Danny de Vries
Requires : PowerShell v2 or higher
Version History : https : / / github . com / EBOOZ / TeamsStatus / commits / main
Name : Get-TeamsStatus . ps1
Author : Danny de Vries
Requires : PowerShell v2 or higher
Version History : https : / / github . com / EBOOZ / TeamsStatus / commits / main
. SYNOPSIS
Sets the status of the Microsoft Teams client to Home Assistant .
Sets the status of the Microsoft Teams client to Home Assistant .
. DESCRIPTION
This script is monitoring the Teams client logfile for certain changes . It
makes use of two sensors that are created in Home Assistant up front .
sensor . teams_status displays that availability status of your Teams client based
on the icon overlay in the taskbar on Windows . sensor . teams_activity shows if you
are in a call or not based on the App updates deamon , which is paused as soon as
you join a call .
This script is monitoring the Teams client logfile for certain changes . It
makes use of two sensors that are created in Home Assistant up front .
sensor . teams_status displays that availability status of your Teams client based
on the icon overlay in the taskbar on Windows . sensor . teams_activity shows if you
are in a call or not based on the App updates deamon , which is paused as soon as
you join a call .
#>
# Configure the varaibles below that will be used in the script
$HAToken = " <Insert token> " # Example: eyJ0eXAiOiJKV1...
@ -27,7 +27,7 @@ DO {
# Get Teams Logfile and last icon overlay status
$TeamsStatus = Get-Content -Path " C:\Users\ $UserName \AppData\Roaming\Microsoft\Teams\logs.txt " -Tail 100 | Select-String -Pattern 'Setting the taskbar overlay icon - Available' , 'Setting the taskbar overlay icon - Busy' , 'Setting the taskbar overlay icon - Away' , 'Setting the taskbar overlay icon - Do not disturb' , 'Main window is closing' , 'main window closed' , 'Setting the taskbar overlay icon - On the phone' , 'Setting the taskbar overlay icon - In a meeting' , 'StatusIndicatorStateService: Added Busy' , 'StatusIndicatorStateService: Added Available' , 'StatusIndicatorStateService: Added InAMeeting' , 'StatusIndicatorStateService: Added DoNotDisturb' | Select-Object -Last 1
# Get Teams Logfile and last app update deamon status
$TeamsActivity = Get-Content -Path " C:\Users\ $UserName \AppData\Roaming\Microsoft\Teams\logs.txt " -Tail 100 | Select-String -Pattern 'Resuming daemon App updates' , 'Pausing daemon App updates' | Select-Object -Last 1
$TeamsActivity = Get-Content -Path " C:\Users\ $UserName \AppData\Roaming\Microsoft\Teams\logs.txt " -Tail 100 | Select-String -Pattern 'Resuming daemon App updates' , 'Pausing daemon App updates' , 'SfB:TeamsNoCall' , 'SfB:TeamsPendingCall' , 'SfB:TeamsActiveCall' | Select-Object -Last 1
If ( $TeamsStatus -like " *Setting the taskbar overlay icon - Available* " -or $TeamsStatus -like " *StatusIndicatorStateService: Added Available* " ) {
$Status = " Available "
@ -54,12 +54,12 @@ ElseIf ($TeamsStatus -like "*ain window*") {
Write-Host $Status
}
If ( $TeamsActivity -like " *Resuming daemon App updates* " ) {
If ( $TeamsActivity -like " *Resuming daemon App updates* " -or $TeamsActivity -like " *SfB:TeamsNoCall* " ) {
$Activity = " Not in a call "
$ActivityIcon = " mdi:phone-off "
Write-Host $Activity
}
ElseIf ( $TeamsActivity -like " *Pausing daemon App updates* " ) {
ElseIf ( $TeamsActivity -like " *Pausing daemon App updates* " -or $TeamsActivity -like " *SfB:TeamsActiveCall* " ) {
$Activity = " In a call "
$ActivityIcon = " mdi:phone-in-talk-outline "
Write-Host $Activity
@ -75,9 +75,7 @@ If ($CurrentStatus -ne $Status) {
" icon " = " mdi:microsoft-teams " ;
}
}
Invoke-RestMethod -Uri " $HAUrl /api/states/sensor.teams_status " -Method POST -Headers $headers -Body ( $params | ConvertTo-Json ) -ContentType " application/json "
}
If ( $CurrentActivity -ne $Activity ) {
@ -90,9 +88,7 @@ If ($CurrentActivity -ne $Activity) {
" icon " = " $ActivityIcon " ;
}
}
Invoke-RestMethod -Uri " $HAUrl /api/states/sensor.teams_activity " -Method POST -Headers $headers -Body ( $params | ConvertTo-Json ) -ContentType " application/json "
}
Start-Sleep 1
} Until ( $Enable -eq 0 )