---
title: Système de Modèles - Contenu de Notification Dynamique
sidebarTitle: Modèles
description: "Maîtrisez les modèles Echobell pour des notifications dynamiques : substitution de variables, expressions, opérateurs, variables système et bonnes pratiques."
---

# Modèles dans Echobell

Les modèles dans Echobell vous permettent de créer des notifications dynamiques et riches en contexte en incorporant des variables dans les titres et les corps de vos notifications. Cette fonctionnalité puissante permet des alertes personnalisées et informatives qui s'adaptent en fonction des données du déclencheur, transformant des notifications génériques en informations exploitables.

## Syntaxe de Base des Modèles

Dans les modèles Echobell, vous pouvez utiliser des variables en les entourant de doubles accolades :

```
{{nomVariable}}
```

Lorsqu'un canal est déclenché, ces variables sont remplacées par les valeurs réelles transmises via le déclencheur. Par exemple, si votre modèle de titre est `Vous avez reçu ${{montant}}` et que vous déclenchez le canal avec une valeur `montant` de 100, la notification résultante s'affichera comme `Vous avez reçu $100`.

## Expressions Avancées de Modèles

Les modèles Echobell prennent en charge diverses expressions pour des scénarios plus complexes :

- Accéder aux Propriétés d'Objets

```
{{utilisateur.nom}}
{{donnees["valeur"]}}
```

- Accéder aux Éléments de Tableaux

```
{{elements[0]}}
```

- Utiliser des Opérateurs de Comparaison

```
{{statut == "actif"}}
{{age > 18}}
```

- Opérateurs Logiques

```
{{estAbonne && !estEnPause}}
{{estUrgent || estHautePriorite}}
```

Tous les opérateurs standard sont pris en charge : `==`, `!=`, `<`, `>`, `<=`, `>=`, `&&`, `||`, et `!`.

## Variables de Modèle à partir de Différents Déclencheurs

### Déclencheurs Webhook

Lors du déclenchement via webhook, vous pouvez fournir des variables via :

1. **Paramètres de chaîne de requête** :

   ```http
   GET https://hook.echobell.one/t/<channel-token>?montant=100&statut=termine
   ```

2. **Corps JSON** (pour les requêtes POST) :

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

   {
     "montant": 100,
     "statut": "termine",
     "utilisateur": {
       "nom": "Jean",
       "id": 12345
     }
   }
   ```

3. **Variables spéciales** :
   - `externalLink` : Fournit un lien cliquable dans les enregistrements de notification
   - `bodyAsText`: Le contenu en texte brut du corps de la requête si `Content-Type` est `text/plain`
   - `header` : Donne accès aux en-têtes de requête HTTP (par exemple, `{{header["content-type"]}}`)

### Déclencheurs Email

Lorsqu'un canal est déclenché par email, les variables suivantes sont automatiquement disponibles :

- `from` : L'adresse email de l'expéditeur
- `to` : L'adresse email du destinataire
- `subject` : La ligne d'objet de l'email
- `text` : Le contenu texte brut de l'email
- `html` : Le contenu HTML de l'email

## Cas d'Utilisation des Modèles

### Comparaisons et Booléens

Les expressions qui utilisent des opérateurs de comparaison ou logiques rendent leur résultat booléen sous forme du texte `true` ou `false` :

```
Paiement supérieur à $1000 : {{amount > 1000}}
Priorité élevée : {{isUrgent || isImportant}}
```

Les modèles Echobell ne prennent **pas** en charge la logique if/else en ligne (ternaire). Pour envoyer un contenu différent selon les situations, utilisez les [Conditions](/docs/conditions) du canal pour router les déclencheurs, ou interpolez directement les valeurs brutes.

### Conditions de Canal

En plus d'utiliser des modèles dans le contenu des notifications, vous pouvez définir des **Conditions** dans les paramètres avancés du canal qui déterminent si les notifications doivent être envoyées ou non. Ces conditions utilisent la même syntaxe d'expression (sans les accolades).

Par exemple, pour n'envoyer des notifications que pour des montants supérieurs à un seuil :

```
montant > 100
```

## Modèles de Liens

Configurez un modèle de lien personnalisé dans les paramètres avancés du canal pour créer des liens cliquables dans les enregistrements de notification :

```
https://dashboard.example.com/commandes/{{idCommande}}
```

Si aucun modèle de lien n'est défini, la valeur de la variable `externalLink` sera utilisée par défaut.

## Variables temporelles système (UTC)

Ces variables sont toujours disponibles pour les modèles (et les conditions) et sont calculées en UTC.

Les valeurs suivantes sont injectées directement (à plat) et peuvent être utilisées par leur nom :

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

Les autres valeurs sont disponibles **uniquement** sous l'espace de noms `sys.` (elles ne sont pas injectées en tant que noms à plat) :

- `sys.timezone` : Toujours `"UTC"`
- `sys.now` : Horodatage ISO‑8601 (même valeur que `iso`)
- `sys.epochMs`, `sys.epochSeconds` : Temps écoulé depuis l’époque Unix (nombre)
- `sys.monthName` : Nom du mois (`January`–`December`)
- `sys.dayOfWeekName` : Nom du jour (`Sunday`–`Saturday`)

L'espace de noms `sys.` reflète également chaque valeur à plat (ex. `sys.year`, `sys.hour`).

Exemples :

```
Envoyé à {{date}} {{time}} {{sys.timezone}}
Nous sommes {{sys.dayOfWeekName}}, {{sys.monthName}} {{dayOfMonth}}, {{year}}
Epoch : {{sys.epochSeconds}}
```

## Meilleures Pratiques

1. **Gérer les Variables Manquantes** : Echobell **n'a pas d'opérateur de valeur par défaut**. L'opérateur `||` est purement logique : il évalue les deux côtés comme des booléens et rend `true` ou `false`. Ainsi `{{username || "Utilisateur Anonyme"}}` rend le texte littéral `true` ou `false`, jamais le nom d'utilisateur ni la chaîne de repli. Lorsqu'une variable est manquante, `{{variable}}` se rend simplement sous forme de chaîne vide. Si vous avez besoin d'une valeur garantie, envoyez-la explicitement dans la charge utile du déclencheur plutôt que de compter sur un repli de modèle :

   ```
   Utilisateur : {{username}}
   Serveur : {{serverName}}
   Erreurs détectées : {{errorCount}}
   ```

2. **Modèles Informatifs** : Incluez des informations clés dans vos modèles pour rendre les notifications exploitables :

   ```
   {{service}} : {{statut}} - {{message}}
   ```

3. **Gardez les Modèles Concis** : Les notifications s'affichent mieux lorsque les titres et les corps sont clairs et directs.

4. **Tests** : Testez vos modèles avec différentes combinaisons de variables pour vous assurer qu'ils s'affichent comme prévu.

Les modèles sont un moyen puissant de créer des notifications dynamiques et informatives qui donnent aux utilisateurs exactement les informations dont ils ont besoin, quand ils en ont besoin.
