Echobell

Kanalbedingungen - Intelligente Benachrichtigungsfilterung

Meistern Sie das Bedingungssystem von Echobell für intelligente Benachrichtigungsfilterung. Vollständiger Leitfaden zu Bedingungsausdrücken, Operatoren, zeitbasierter Filterung und Best Practices zur Reduzierung von Alarm-Müdigkeit.

Kanalbedingungen

Kanalbedingungen sind leistungsstarke Ausdrücke, die bestimmen, wann Benachrichtigungen gesendet werden sollen. Durch die Festlegung von Bedingungen für Ihren Kanal können Sie Benachrichtigungen basierend auf dem Inhalt von Variablen oder HTTP-Headern filtern und sicherstellen, dass Abonnenten nur relevante Warnungen erhalten. Dies ist essenziell, um Alarm-Müdigkeit zu reduzieren und ein hohes Signal-Rausch-Verhältnis in Ihrem Benachrichtigungssystem aufrechtzuerhalten.

Bedingungen verstehen

Bedingungen sind Ausdrücke, die entweder zu true oder false ausgewertet werden. Wenn ein Channel ausgelöst wird:

  • Wenn Bedingungen nicht festgelegt sind (leer), werden Benachrichtigungen an alle Abonnenten gesendet.
  • Wenn Bedingungen festgelegt sind, werden Benachrichtigungen nur gesendet, wenn der Ausdruck zu true ausgewertet wird.

Bedingungen schreiben

Bedingungen werden als Ausdrücke ohne die {{}} Klammerung geschrieben, die in Vorlagen verwendet werden. Zum Beispiel:

status == "active"

Diese Bedingung erlaubt das Senden von Benachrichtigungen nur, wenn die Variable status den Wert "active" hat.

Häufige Anwendungsfälle

Hier sind einige praktische Beispiele, wie Sie Bedingungen verwenden können:

Grundlegende Variablenprüfungen

amount > 100

Benachrichtigen Sie nur, wenn die Variable "amount" größer als 100 ist.

message != ""

Benachrichtigen Sie nur, wenn die Variable "message" nicht leer ist.

isUrgent == true

Benachrichtigen Sie nur, wenn die Variable "isUrgent" wahr ist.

Überprüfung von HTTP-Headern

Sie können auf HTTP-Header über die spezielle Variable header zugreifen:

header["user-agent"].includes("Mozilla")

Benachrichtigen Sie nur, wenn die Anfrage von einem Mozilla-Browser stammt.

header["content-type"] == "application/json"

Benachrichtigen Sie nur, wenn der Inhaltstyp JSON ist.

header["x-priority"] == "high"

Benachrichtigen Sie nur, wenn ein benutzerdefinierter Prioritäts-Header auf "high" gesetzt ist.

Alle Schlüssel in Headern sind kleingeschrieben.

Komplexe Bedingungen

Sie können mehrere Bedingungen mit logischen Operatoren kombinieren:

(temperature > 30 || pressure > 100) && status == "monitoring"

Benachrichtigen Sie nur, wenn entweder die Temperatur 30 überschreitet oder der Druck 100 überschreitet, und der Status "monitoring" ist.

environment == "production" && (errorLevel == "critical" || errorLevel == "high")

Benachrichtigen Sie nur bei kritischen oder schwerwiegenden Fehlern in der Produktionsumgebung.

Unterstützte Operatoren

Die folgenden Operatoren werden in Bedingungsausdrücken unterstützt:

OperatorBeschreibungBeispiel
==Gleichstatus == "active"
!=Ungleichstatus != "inactive"
!Logisches NICHT!isCompleted
<Kleiner alscount < 10
>Größer alsprice > 99.99
<=Kleiner oder gleichbattery <= 20
>=Größer oder gleichconfidence >= 0.95
&&Logisches UNDisAdmin && isActive
||Logisches ODERisError || isWarning

Bedingungsvariablen

Wenn ein Channel über Webhook ausgelöst wird, können Sie auf Folgendes zugreifen:

  1. Abfrageparameter aus der URL
  2. JSON-Body aus POST-Anfragen
  3. HTTP-Header über das Objekt header

Bei E-Mail-Triggern können Sie auf Folgendes zugreifen:

  • from: Die E-Mail-Absenderadresse
  • to: Die Empfängeradresse
  • subject: Die Betreffzeile der E-Mail
  • text: Der Klartext-Inhalt
  • html: Der HTML-Inhalt

Systemzeit‑Variablen (UTC)

Diese schreibgeschützten Variablen stehen in Bedingungen und Templates immer zur Verfügung. Alle Werte sind in UTC berechnet.

  • timezone: Der konstante String "UTC"
  • now / iso: Aktuelle Zeit als ISO‑8601‑String (z. B. 2025-05-06T12:34:56.789Z)
  • epochMs: Millisekunden seit Unix‑Epoch (Zahl)
  • epochSeconds: Sekunden seit Unix‑Epoch (Zahl)
  • year: Vierstellige Jahreszahl
  • month: Monatszahl 1–12
  • monthName: Monatsname January–December
  • dayOfMonth: Tag im Monat 1–31
  • dayOfWeek: Wochentag 0–6 (Sonntag = 0)
  • dayOfWeekName: Wochentagsname Sunday–Saturday
  • hour: Stunde 0–23
  • minute: Minute 0–59
  • second: Sekunde 0–59
  • date: Datum als YYYY-MM-DD
  • time: Zeit als HH:mm:ss

Beispiele:

// Werktage zwischen 09:00–17:00 UTC
hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5

// Nur am Wochenende
dayOfWeek == 0 || dayOfWeek == 6

// Erster Tag des Monats zur vollen Stunde
dayOfMonth == 1 && minute == 0

Best Practices

  1. Einfach beginnen - Beginnen Sie mit einfachen Bedingungen und erhöhen Sie bei Bedarf die Komplexität
  2. Gründlich testen - Testen Sie Ihre Bedingungen mit verschiedenen Eingaben, um sicherzustellen, dass sie wie erwartet funktionieren
  3. Dokumentieren Sie Ihre Bedingungen - Fügen Sie im Notizfeld Ihres Channels Kommentare hinzu, um komplexe Bedingungen zu erklären
  4. Berücksichtigen Sie Randfälle - Berücksichtigen Sie fehlende Variablen oder unerwartete Werte

Beispiele

Nur bei bestimmten Fehlern alarmieren

errorType == "database" && severity == "high"

Nur während der Geschäftszeiten benachrichtigen

hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5

Nach Benutzertyp filtern

userType == "admin" || userRole == "supervisor"

Anfrageursprung überprüfen

header["origin"] == "https://trusted-site.com" || header["referer"].includes("trusted-domain.com")

Schwellenwertüberschreitungen überwachen

metricValue > threshold && isMonitoring == true

Durch den effektiven Einsatz von Bedingungen können Sie den Benachrichtigungslärm reduzieren und sicherstellen, dass Abonnenten nur Warnungen erhalten, die für sie relevant und umsetzbar sind.

Inhaltsverzeichnis