---
title: Sistema de Plantillas - Contenido de Notificación Dinámico
sidebarTitle: Plantillas
description: 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.
---

# Plantillas en Echobell

Las plantillas en Echobell te permiten crear notificaciones dinámicas y ricas en contexto incorporando variables en los títulos y cuerpos de tus notificaciones. Esta poderosa función permite alertas personalizadas e informativas que se adaptan según los datos del disparador, transformando notificaciones genéricas en inteligencia procesable.

## Sintaxis Básica de Plantillas

En las plantillas de Echobell, puedes usar variables envolviéndolas en llaves dobles:

```
{{nombreVariable}}
```

Cuando se activa un canal, estas variables se reemplazan con valores reales pasados a través del disparador. Por ejemplo, si tu plantilla de título es `Has recibido ${{cantidad}}` y activas el canal con un valor de `cantidad` de 100, la notificación resultante se mostrará como `Has recibido $100`.

## Expresiones Avanzadas de Plantillas

Las plantillas de Echobell admiten diversas expresiones para escenarios más complejos:

- Acceder a Propiedades de Objetos

```
{{usuario.nombre}}
{{datos["valor"]}}
```

- Acceder a Elementos de Arreglos

```
{{elementos[0]}}
```

- Usar Operadores de Comparación

```
{{estado == "activo"}}
{{edad > 18}}
```

- Operadores Lógicos

```
{{estaSuscrito && !estaPausado}}
{{esUrgente || esAltaPrioridad}}
```

Todos los operadores estándar son compatibles: `==`, `!=`, `<`, `>`, `<=`, `>=`, `&&`, `||`, y `!`.

## Variables de Plantilla de Diferentes Disparadores

### Disparadores de Webhook

Al disparar a través de webhook, puedes proporcionar variables a través de:

1. **Parámetros de cadena de consulta**:

   ```http
   GET https://hook.echobell.one/t/<channel-token>?cantidad=100&estado=completado
   ```

2. **Cuerpo JSON** (para peticiones POST):

   ```http
   POST https://hook.echobell.one/t/<channel-token>
   Content-Type: application/json

   {
     "cantidad": 100,
     "estado": "completado",
     "usuario": {
       "nombre": "Juan",
       "id": 12345
     }
   }
   ```

3. **Variables especiales**:
   - `externalLink`: Proporciona un enlace clickeable en los registros de notificación
   - `bodyAsText`: El contenido de texto plano del cuerpo de la solicitud si `Content-Type` es `text/plain`
   - `header`: Da acceso a los encabezados de la petición HTTP (p.ej., `{{header["content-type"]}}`)

### Disparadores de Email

Cuando un canal se dispara por email, las siguientes variables están disponibles automáticamente:

- `from`: La dirección de correo del remitente
- `to`: La dirección de correo del destinatario
- `subject`: La línea de asunto del correo
- `text`: El contenido de texto plano del correo
- `html`: El contenido HTML del correo

## Casos de Uso de Plantillas

### Comparaciones y Booleanos

Las expresiones que usan operadores de comparación o lógicos renderizan su resultado booleano como el texto `true` o `false`:

```
Pago superior a $1000: {{amount > 1000}}
Alta prioridad: {{isUrgent || isImportant}}
```

Las plantillas de Echobell **no** admiten lógica if/else en línea (ternaria). Para enviar contenido diferente en situaciones distintas, usa las [Condiciones](/docs/conditions) del canal para enrutar los disparadores, o interpola los valores directamente.

### Condiciones de Canal

Además de usar plantillas en el contenido de las notificaciones, puedes establecer **Condiciones** en la configuración avanzada del canal que determinan si las notificaciones deben enviarse o no. Estas condiciones utilizan la misma sintaxis de expresión (sin las llaves).

Por ejemplo, para enviar notificaciones solo para cantidades mayores a un umbral:

```
cantidad > 100
```

## Plantillas de Enlaces

Configura una plantilla de enlace personalizada en la configuración avanzada del canal para crear enlaces clickeables en los registros de notificación:

```
https://dashboard.example.com/ordenes/{{idOrden}}
```

Si no se establece ninguna plantilla de enlace, se usará por defecto el valor de la variable `externalLink`.

## Variables de tiempo del sistema (UTC)

Estas variables están siempre disponibles para las plantillas (y condiciones) y se calculan en UTC.

Los siguientes valores se inyectan directamente (planos) y pueden usarse por su nombre:

- `year`, `month` (1–12)
- `dayOfMonth`, `dayOfWeek` (0–6, domingo = 0)
- `hour` (0–23), `minute`, `second`
- `date` (`YYYY-MM-DD`), `time` (`HH:mm:ss`)
- `iso`: Marca de tiempo ISO‑8601 (p. ej., `2025-05-06T12:34:56.789Z`)

Otros valores están disponibles **solo** bajo el espacio de nombres `sys.` (no se inyectan como nombres planos):

- `sys.timezone`: Siempre `"UTC"`
- `sys.now`: Marca de tiempo ISO‑8601 (mismo valor que `iso`)
- `sys.epochMs`, `sys.epochSeconds`: Tiempo actual desde el Unix epoch (número)
- `sys.monthName`: Nombre del mes (`January`–`December`)
- `sys.dayOfWeekName`: Nombre del día (`Sunday`–`Saturday`)

El espacio de nombres `sys.` también refleja todos los valores planos (p. ej., `sys.year`, `sys.hour`).

Ejemplos:

```
Enviado a las {{date}} {{time}} {{sys.timezone}}
Hoy es {{sys.dayOfWeekName}}, {{sys.monthName}} {{dayOfMonth}}, {{year}}
Época: {{sys.epochSeconds}}
```

## Mejores Prácticas

1. **Maneja Variables Faltantes**: Echobell **no tiene operador de valor predeterminado**. El operador `||` es puramente lógico: evalúa ambos lados como booleanos y renderiza `true` o `false`. Por eso `{{username || "Usuario Anónimo"}}` renderiza el texto literal `true` o `false`, nunca el nombre de usuario ni la cadena de reserva. Cuando falta una variable, `{{variable}}` simplemente se renderiza como una cadena vacía. Si necesitas un valor garantizado, envíalo explícitamente en la carga del disparador en lugar de depender de un valor de reserva de plantilla:

   ```
   Usuario: {{username}}
   Servidor: {{serverName}}
   Errores detectados: {{errorCount}}
   ```

2. **Plantillas Informativas**: Incluye información clave en tus plantillas para hacer que las notificaciones sean accionables:

   ```
   {{servicio}}: {{estado}} - {{mensaje}}
   ```

3. **Mantén las Plantillas Concisas**: Las notificaciones se muestran mejor cuando los títulos y cuerpos son claros y directos.

4. **Pruebas**: Prueba tus plantillas con diferentes combinaciones de variables para asegurarte de que se rendericen como se espera.

Las plantillas son una forma poderosa de crear notificaciones dinámicas e informativas que proporcionan a los usuarios exactamente la información que necesitan, cuando la necesitan.
