diff --git a/Get-TeamsStatus.ps1 b/Get-TeamsStatus.ps1 index cd85370..f4493ea 100644 --- a/Get-TeamsStatus.ps1 +++ b/Get-TeamsStatus.ps1 @@ -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 = "" # 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)