---
title: Kanalbedingungen - Intelligente Benachrichtigungsfilterung
sidebarTitle: Bedingungen
description: 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.

<Callout type="info">Alle Schlüssel in Headern sind kleingeschrieben.</Callout>

### 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:

| Operator                  | Beschreibung        | Beispiel                                    |
| ------------------------- | ------------------- | ------------------------------------------- |
| `==`                      | Gleich              | `status == "active"`                        |
| `!=`                      | Ungleich            | `status != "inactive"`                      |
| `!`                       | Logisches NICHT     | `!isCompleted`                              |
| `<`                       | Kleiner als         | `count < 10`                                |
| `>`                       | Größer als          | `price > 99.99`                             |
| `<=`                      | Kleiner oder gleich | `battery <= 20`                             |
| `>=`                      | Größer oder gleich  | `confidence >= 0.95`                        |
| `&&`                      | Logisches UND       | `isAdmin && isActive`                       |
| <code>&#124;&#124;</code> | Logisches ODER      | <code>isError &#124;&#124; isWarning</code> |

## 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.
