Private/Invoke-BridgeClosedNotification.ps1
function Invoke-BridgeClosedNotification { [CmdletBinding()] <# .SYNOPSIS Στέλνει ειδοποίηση ότι η γέφυρα έκλεισε. .DESCRIPTION Η Invoke-BridgeClosedNotification δημιουργεί και αποστέλλει ειδοποίηση όταν εντοπιστεί κλείσιμο της γέφυρας. .PARAMETER CurrentState Η λίστα καταστάσεων των γεφυρών. .PARAMETER PoUserKey Το Pushover User Key του παραλήπτη. .PARAMETER PoApiKey Το Pushover API Token της εφαρμογής. .OUTPUTS None. .EXAMPLE Invoke-BridgeClosedNotification -CurrentState $state -PoUserKey 'user123' -PoApiKey 'token123' .NOTES Στέλνει μόνο για γεφυρες με κατάσταση 'Κλειστή'. #> [OutputType([void])] param ( [Parameter(Mandatory)][object[]]$CurrentState, [Parameter(Mandatory)][string]$ApiKey, [Parameter(Mandatory)][string]$PoUserKey, [Parameter(Mandatory)][string]$PoApiKey ) foreach ($entry in $CurrentState) { switch ($entry.gefyraStatus) { 'Μόνιμα κλειστή' { $writeBridgeLogSplat = @{ Stage = 'Ειδοποίηση' Message = "🛑 Ειδοποίηση: $($entry.gefyraName)ς είναι μόνιμα κλειστή (χωρίς OCR)." Level = 'Debug' } Write-BridgeLog @writeBridgeLogSplat $pushoverSplat = @{ PoUserKey = $PoUserKey PoApiKey = $PoApiKey Title = "🚧 Η γέφυρα της $($entry.gefyraName)ς είναι μόνιμα κλειστή" Message = "Η γέφυρα $($entry.gefyraName)ς είναι μόνιμα κλειστή. Επιλέξτε άλλη διαδρομή." } Send-BridgePushover @pushoverSplat } 'Κλειστή με πρόγραμμα' { $writeBridgeLogSplat = @{ Stage = 'Ειδοποίηση' Message = "📸 Ειδοποίηση: $($entry.gefyraName) είναι κλειστή με πρόγραμμα (θα γίνει OCR)." Level = 'Debug' } Write-BridgeLog @writeBridgeLogSplat $writeBridgeLogSplat = @{ Stage = 'Ανάλυση' Message = "📷 Εικόνα προς OCR: $($entry.imageUrl)" Level = 'Debug' } Write-BridgeLog @writeBridgeLogSplat $ocrSplat = @{ ApiKey = $ApiKey ImageUri = $entry.imageUrl Verbose = $true ErrorAction = 'Stop' } try { $ocrResult = Invoke-BridgeOCRGoogleCloud @ocrSplat if ($ocrResult) { $pushoverSplat = @{ PoUserKey = $PoUserKey PoApiKey = $PoApiKey Title = "🚧 Η γέφυρα της $($entry.gefyraName)ς έκλεισε" Message = ($ocrResult | Out-String) } Send-BridgePushover @pushoverSplat } } catch { $writeBridgeLogSplat = @{ Stage = 'Σφάλμα' Message = "❌ Απέτυχε η OCR για $($entry.imageUrl): $($_.Exception.Message)" Level = 'Warning' } Write-BridgeLog @writeBridgeLogSplat } } default { $writeBridgeLogSplat = @{ Stage = 'Ειδοποίηση' Message = "ℹ️ Αγνοείται ειδοποίηση για $($entry.gefyraName)ς με κατάσταση: $($entry.gefyraStatus)" Level = 'Debug' } Write-BridgeLog @writeBridgeLogSplat } } } } |