Condiciones de Canal - Filtrado Inteligente de Notificaciones
Domina el sistema de condiciones de Echobell para filtrar notificaciones inteligentemente. Guía completa de expresiones condicionales, operadores, filtrado basado en tiempo y mejores prácticas para reducir la fatiga de alertas.
Condiciones de Canal
Las condiciones de canal son expresiones poderosas que determinan cuándo se deben enviar notificaciones. Al establecer condiciones en tu canal, puedes filtrar notificaciones basadas en el contenido de variables o encabezados HTTP, asegurando que los suscriptores reciban solo alertas relevantes. Esto es esencial para reducir la fatiga de alertas y mantener una alta relación señal-ruido en tu sistema de notificaciones.
Entendiendo las Condiciones
Las condiciones son expresiones que se evalúan como true o false. Cuando se activa un canal:
- Si las condiciones no están establecidas (vacías), se envían notificaciones a todos los suscriptores.
- Si las condiciones están establecidas, las notificaciones se envían solo cuando la expresión se evalúa como
true.
Escribiendo Condiciones
Las condiciones se escriben como expresiones sin los envoltorios {{}} que se utilizan en las plantillas. Por ejemplo:
status == "active"Esta condición solo permitirá que se envíen notificaciones cuando la variable status sea igual a "active".
Casos de Uso Comunes
Aquí hay algunos ejemplos prácticos de cómo podrías usar las condiciones:
Verificaciones Básicas de Variables
amount > 100Notificar solo cuando la variable "amount" sea mayor que 100.
message != ""Notificar solo cuando la variable "message" no esté vacía.
isUrgent == trueNotificar solo cuando la variable "isUrgent" sea verdadera.
Verificando Encabezados HTTP
Puedes acceder a los encabezados HTTP usando la variable especial header:
header["user-agent"].includes("Mozilla")Notificar solo cuando la solicitud proviene de un navegador Mozilla.
header["content-type"] == "application/json"Notificar solo cuando el tipo de contenido es JSON.
header["x-priority"] == "high"Notificar solo cuando un encabezado personalizado de prioridad está configurado como "high".
Todas las claves en los encabezados están en minúsculas.
Condiciones Complejas
Puedes combinar múltiples condiciones usando operadores lógicos:
(temperature > 30 || pressure > 100) && status == "monitoring"Notificar solo cuando la temperatura excede 30 o la presión excede 100, y el estado es "monitoring".
environment == "production" && (errorLevel == "critical" || errorLevel == "high")Notificar solo para errores críticos o de alto nivel en el entorno de producción.
Operadores Admitidos
Los siguientes operadores son admitidos en las expresiones de condición:
| Operador | Descripción | Ejemplo |
|---|---|---|
== | Igual a | status == "active" |
!= | No igual a | status != "inactive" |
! | NO lógico | !isCompleted |
< | Menor que | count < 10 |
> | Mayor que | price > 99.99 |
<= | Menor o igual a | battery <= 20 |
>= | Mayor o igual a | confidence >= 0.95 |
&& | AND lógico | isAdmin && isActive |
|| | OR lógico | isError || isWarning |
Variables de Condición
Cuando un canal se activa a través de webhook, puedes acceder a:
- Parámetros de consulta de la URL
- Cuerpo JSON de solicitudes POST
- Encabezados HTTP a través del objeto
header
Para activadores de correo electrónico, puedes acceder a:
from: La dirección del remitente del correoto: La dirección del destinatariosubject: La línea de asunto del correotext: El contenido de texto planohtml: El contenido HTML
Variables de tiempo del sistema (UTC)
Estas variables de solo lectura están siempre disponibles en condiciones y plantillas. Todos los valores se calculan en UTC.
timezone: La cadena constante"UTC"now/iso: Hora actual en formato ISO‑8601 (p. ej.,2025-05-06T12:34:56.789Z)epochMs: Milisegundos desde el Unix epoch (número)epochSeconds: Segundos desde el Unix epoch (número)year: Año de 4 dígitosmonth: Mes1–12monthName: Nombre del mesJanuary–DecemberdayOfMonth: Día del mes1–31dayOfWeek: Día de la semana0–6(domingo = 0)dayOfWeekName: Nombre del díaSunday–Saturdayhour: Hora del día0–23minute: Minuto0–59second: Segundo0–59date: CadenaYYYY-MM-DDtime: CadenaHH:mm:ss
Ejemplos:
// Días laborables entre 09:00–17:00 UTC
hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5
// Solo fines de semana
dayOfWeek == 0 || dayOfWeek == 6
// Primer día del mes a la hora en punto
dayOfMonth == 1 && minute == 0Mejores Prácticas
- Comienza simple - Empieza con condiciones básicas y añade complejidad según sea necesario
- Prueba exhaustivamente - Prueba tus condiciones con varias entradas para asegurar que funcionen como se espera
- Documenta tus condiciones - Añade comentarios en el campo de notas de tu canal para explicar condiciones complejas
- Considera casos extremos - Ten en cuenta variables faltantes o valores inesperados
Ejemplos
Alertar solo para errores específicos
errorType == "database" && severity == "high"Notificar solo durante horas de trabajo
hour >= 9 && hour < 17 && dayOfWeek >= 1 && dayOfWeek <= 5Filtrar por tipo de usuario
userType == "admin" || userRole == "supervisor"Comprobar origen de la solicitud
header["origin"] == "https://trusted-site.com" || header["referer"].includes("trusted-domain.com")Monitorizar violaciones de umbral
metricValue > threshold && isMonitoring == trueAl usar las condiciones de manera efectiva, puedes reducir el ruido de las notificaciones y asegurar que los suscriptores reciban solo las alertas que son relevantes y procesables para ellos.
Plantillas
Domina el sistema de plantillas de Echobell para crear notificaciones dinámicas e informativas. Guía completa de sustitución de variables, expresiones, operadores, variables del sistema y mejores prácticas para plantillas de notificación.
Desarrollador
Guía completa para desarrolladores que usan Echobell con herramientas y plataformas populares. Integra Grafana, Prometheus, GitHub Actions, Home Assistant, UptimeRobot y más para notificaciones móviles instantáneas o llamadas telefónicas cuando ocurran eventos críticos.