Private/Invoke-BridgeOpenedNotification.ps1
|
function Invoke-BridgeOpenedNotification { [CmdletBinding()] <# .SYNOPSIS Στέλνει ειδοποίηση ότι η γέφυρα άνοιξε. .DESCRIPTION Η Invoke-BridgeOpenedNotification αποστέλλει ειδοποίηση όταν ανιχνευτεί ότι η γέφυρα έχει ανοίξει. .PARAMETER CurrentState Η λίστα καταστάσεων των γεφυρών. .PARAMETER PoUserKey Το Pushover User Key του παραλήπτη. .PARAMETER PoApiKey Το Pushover API Token της εφαρμογής. .OUTPUTS None. .EXAMPLE Invoke-BridgeOpenedNotification -CurrentState $state -PoUserKey 'user123' -PoApiKey 'token123' .NOTES Στέλνει μόνο για γεφυρες με κατάσταση 'Ανοιχτή'. #> [OutputType([void])] param ( [Parameter(Mandatory)][object[]]$CurrentState, [Parameter(Mandatory)][string]$PoUserKey, [Parameter(Mandatory)][string]$PoApiKey ) foreach ($entry in $CurrentState) { if ($entry.gefyraStatus -eq 'Ανοιχτή') { try { # Συνδυασμός log messages για αποφυγή spam $logDetails = @( "Γέφυρα : $($entry.GefyraName)", "Κατάσταση : $($entry.GefyraStatus)", "Χρονική στιγμή: $($entry.Timestamp)", "Εικόνα : $($entry.ImageUrl)" ) -join "`n" $writeBridgeLogSplat = @{ Stage = 'Ανάλυση' Message = $logDetails } Write-BridgeLog @writeBridgeLogSplat $sendPushoverSplat = @{ PoUserKey = $PoUserKey PoApiKey = $PoApiKey Title = 'Γέφυρα Ανοιχτή!' Message = "Η γέφυρα της $($entry.gefyraName)ς άνοιξε" ErrorAction = 'Stop' } Send-BridgePushover @sendPushoverSplat } catch { $writeBridgeLogSplat = @{ Stage = 'Σφάλμα' Message = "❌ Αποτυχία αποστολής ειδοποίησης ανοίγματος για $($entry.gefyraName): $($_.Exception.Message)" Level = 'Warning' } Write-BridgeLog @writeBridgeLogSplat $PSCmdlet.ThrowTerminatingError( [System.Management.Automation.ErrorRecord]::new( ([System.Exception]::new("Αποτυχία αποστολής ειδοποίησης ανοίγματος: $($_.Exception.Message)")), 'BridgeOpenedNotificationError', [System.Management.Automation.ErrorCategory]::ConnectionError, $entry ) ) } } } } |