# Utilisation des variables

Dans Hablla, lors de la configuration d'un flux d'automatisation, vous pouvez utiliser **des variables** pour récupérer des données de composants précédents et des expressions **logiques et conditionnelles** pour rendre vos automatisations plus dynamiques et intelligentes.

Cela permet que les informations soient réutilisées automatiquement, sans avoir à les remplir manuellement, rendant le processus plus efficace et sans erreurs.

### 🎯 **Que sont les variables dans Hablla ?**

Chaque composant à l'intérieur d'un flux a un **code unique** et peut générer **des données de sortie** qui peuvent être utilisées par d'autres composants dans le même flux.

<figure><img src="/files/9460695eae92d12d83fc21d7e00257b122989e46" alt=""><figcaption></figcaption></figure>

Vous pouvez accéder à ces données en utilisant la syntaxe suivante :

```plaintext
{{$data?.codigoDoComponente?.caminhoVariavel}}
```

➡ **Exemple réel :**\
Si un composant appelé `whatsappReceptive_tmy0de` a identifié une personne, et son ID est stocké dans le champ `person.id`, nous pouvons accéder à cette valeur ainsi :

```plaintext
{{$data?.whatsappReceptive_tmy0de?.person?.id}}
```

Si ce composant ne renvoie pas de valeur valide, nous pouvons essayer un second composant appelé `whatsappReceptive_r2b7wr`:

```plaintext
{{$data?.whatsappReceptive_tmy0de?.person?.id ?? $data?.whatsappReceptive_r2b7wr?.person?.id}}
```

📌 Ici, `??` signifie : **si la première valeur est nulle ou indéfinie, utilisez la seconde.**

***

### 🔥 **Opérateurs et expressions dans Hablla**

En plus d'accéder aux variables, vous pouvez utiliser **des opérateurs logiques** pour créer des règles et des conditions dans vos flux.

#### 🛠 Opérateurs logiques et conditionnels

| Opérateur                                         | Signification                                                                                   | Exemple                                                       |
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| `??` (Nullish Coalescing - "Si nul ou indéfini")  | Si la première valeur est nulle ou indéfinie, utilisez la seconde                               | `{{$data?.componente1?.valor ?? $data?.componente2?.valor}}`  |
| \|\| (Logical OR - "Ou")                          | Si la première valeur est fausse (`false`, `null`, `undefined`, `0`, `""`), utilisez la seconde | {{$data?.status \|\| "Pendente"}}                             |
| `:` (Opérateur ternaire - "Si... alors... sinon") | Fonctionne comme un opérateur ternaire (if/else)                                                | `{{$data?.idade > 18 ? "Maior de idade" : "Menor de idade"}}` |
| `&&` (Logical AND - "Et")                         | Retourne la seconde valeur si la première est vraie                                             | `{{$data?.temDesconto && "Desconto Aplicado"}}`               |

***

| Opérateur            | Signification                     | Exemple            |
| -------------------- | --------------------------------- | ------------------ |
| `+` (Addition)       | Additionne deux valeurs.          | `{{5 + 3}}` → `8`  |
| `-` (Soustraction)   | Soustrait deux valeurs.           | `{{10 - 4}}` → `6` |
| `*` (Multiplication) | Multiplie deux valeurs.           | `{{3 * 4}}` → `12` |
| `/` (Division)       | Divise deux valeurs.              | `{{10 / 2}}` → `5` |
| `%` (Modulo)         | Retourne le reste de la division. | `{{10 % 3}}` → `1` |

***

#### 🔍 **Opérateurs de comparaison**

| Opérateur                     | Signification                                                               | Exemple                   |
| ----------------------------- | --------------------------------------------------------------------------- | ------------------------- |
| `==` (Égalité)                | Compare des valeurs sans vérifier le type.                                  | `{{5 == "5"}}` → `true`   |
| `===` (Strictement égal)      | Compare les valeurs et le type de données.                                  | `{{5 === "5"}}` → `false` |
| `!=` (Différent)              | Compare si les valeurs sont différentes.                                    | `{{5 != "5"}}` → `false`  |
| `!==` (Strictement différent) | Compare si les valeurs et les types sont différents.                        | `{{5 !== "5"}}` → `true`  |
| `>` (Supérieur à)             | Retourne `true` si la première valeur est supérieure à la seconde.          | `{{10 > 5}}` → `true`     |
| `<` (Inférieur à)             | Retourne `true` si la première valeur est inférieure à la seconde.          | `{{3 < 7}}` → `true`      |
| `>=` (Supérieur ou égal)      | Retourne `true` si la première valeur est supérieure ou égale à la seconde. | `{{8 >= 8}}` → `true`     |
| `<=` (Inférieur ou égal)      | Retourne `true` si la première valeur est inférieure ou égale à la seconde. | `{{6 <= 5}}` → `false`    |

***

#### 🔄 **Opérateurs de chaîne**

| Opérateur           | Signification          | Exemple                                    |
| ------------------- | ---------------------- | ------------------------------------------ |
| `+` (Concaténation) | Assemble deux chaînes. | `{{"Olá, " + "mundo!"}}` → `"Olá, mundo!"` |

***

#### 🔀 **Opérateurs de tableaux**

| Opérateur     | Signification                                 | Exemple                                    |
| ------------- | --------------------------------------------- | ------------------------------------------ |
| `.length`     | Retourne la taille d'un tableau.              | `{{$data?.nomes.length}}`                  |
| `.includes()` | Vérifie si une valeur existe dans le tableau. | `{{$data?.cidades.includes("São Paulo")}}` |
| `.map()`      | Itère sur les éléments et modifie le tableau. | `{{$data?.numeros.map(n => n * 2)}}`       |
| `.filter()`   | Filtre les éléments du tableau.               | `{{$data?.numeros.filter(n => n > 5)}}`    |

### 🔍 **Comment utiliser les conditions IF/ELSE**

Dans Hablla, vous pouvez créer **des règles conditionnelles** au sein des flux. Voici comment cela fonctionne :

#### ✅ **Exemple 1 : Vérifier si un client est qualifié**

```plaintext
{{$data?.lead?.score > 50 ? "Lead Qualificado" : "Lead Não Qualificado"}}
```

Si le score du lead est **supérieur à 50**, le résultat sera `"Lead Qualificado"`, sinon, `"Lead Não Qualificado"`.

#### ✅ **Exemple 2 : Définir un statut par défaut**

```plaintext
{{$data?.pedido?.status ?? "Em processamento"}}
```

Si le statut de la commande existe, il sera utilisé. Sinon, le statut par défaut `"Em processamento"` sera appliqué.

#### ✅ **Exemple 3 : Combiner plusieurs conditions**

```plaintext
{{$data?.usuario?.idade >= 18 ? "Maior de idade" : $data?.usuario?.idade > 0 ? "Menor de idade" : "Idade não informada"}}
```

🔹 Si l'âge est supérieur ou égal à **18**, le résultat sera `"Maior de idade"`.\
🔹 Si l'âge est supérieur à **0**, mais inférieur à **18**, le résultat sera `"Menor de idade"`.\
🔹 Si l'âge n'est pas renseigné, le résultat sera `"Idade não informada"`.

***

### 🎯 **Comment utiliser ces expressions dans la configuration d'un composant**

Chaque fois que vous configurez un composant dans Hablla, vous pouvez utiliser ces expressions dans les champs où vous souhaitez insérer des valeurs dynamiques.

📌 **Exemple pratique :**\
Supposons que nous créons une nouvelle carte dans le flux et que nous voulons y associer une personne identifiée dans un composant précédent. Nous pouvons le faire ainsi :

```plaintext
{{$data?.whatsappReceptive_tmy0de?.person?.id ?? $data?.whatsappReceptive_r2b7wr?.person?.id}}
```

Cela garantit que, si un composant ne trouve pas la personne, l'autre sera utilisé automatiquement.

***

### 🔥 **Résumé : Comment utiliser les variables et expressions dans Hablla**

✅ **Utilisez `{{$data?.codigoDoComponente?.caminhoVariavel}}`** pour accéder aux données des composants précédents.\
✅ **Utilisez `??` pour définir une valeur alternative si la première est nulle ou indéfinie.**\
✅ **Utilisez `||` pour définir une valeur alternative si la première est fausse.**\
✅ **Utilisez `:` pour créer des règles `if/else` au sein des champs.**\
✅ **Utilisez `&&` pour définir une valeur seulement si la condition est vraie.**

🚀 **Avec ces techniques, vous pouvez créer des flux intelligents et personnalisés sans avoir à programmer !**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hablla.com/french/flux-dautomatisations/utilisation-des-variables.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
