Variables et données dynamiques
Personnaliser les prompts et les blocs d'un flow avec les données de l'appel, de la conversation et des bases de contacts, et prévoir les valeurs absentes.
Une variable est un emplacement, écrit entre doubles accolades, que Flowtative remplace par une valeur au moment de la conversation : Bonjour {{caller.name}} devient « Bonjour Claire Martin ». Les variables permettent à un même agent de saluer chaque client par son nom, de reprendre un numéro de commande donné plus tôt ou de transmettre une information à la fin de l'appel. Cette page décrit d'où viennent les valeurs, où les utiliser et comment éviter les trous quand une valeur manque.
Les quatre sources de données
| Source | Exemple | Où l'écrire | Forme |
|---|---|---|---|
| Contexte de la conversation | Numéro de l'appelant, numéro appelé, date du jour | Prompt système de l'agent, champs {{…}} d'un flow | {{caller.phone_number}} |
| Informations collectées pendant la conversation | E-mail dicté par le client, fiche trouvée dans une base | Champs {{…}} d'un flow, chemins | {{state.parameters.email}} |
| Colonnes d'une base de contacts | Prénom, date de rendez-vous d'un contact de campagne | Prompt système de l'agent qui appelle | ${contact.prenom} |
| Valeurs fournies au démarrage | Variables par défaut d'une automatisation, variables de test | Prompt système de l'agent | {{reason}} |
Écrire une variable
La syntaxe est la même partout où les variables sont acceptées :
{{nom}}ou{{groupe.nom}}: le nom peut être pointé, par exemple{{caller.phone_number}};- les espaces autour du nom sont tolérés :
{{ company }}équivaut à{{company}}; - la valeur est substituée au moment de la conversation, pas à l'enregistrement : le texte enregistré garde les accolades.
Note
Le nom d'une variable est sensible à la casse et doit être identique à celui de la donnée fournie : {{caller.name}} et {{caller.Name}} sont deux variables différentes.
Dans le prompt d'un agent
Le champ Prompt système de l'éditeur d'agent (section Identité & prompt) aide à insérer les variables sans faute de frappe.
- Placez le curseur à l'endroit voulu.
- Tapez
{{, ou cliquez sur Insérer une variable. Un menu s'ouvre, avec un champ Rechercher une variable…. - Tapez quelques lettres pour filtrer, par nom ou par libellé (« tél » trouve Téléphone).
- Cliquez sur la variable : elle est insérée sous sa forme complète, et le curseur se place juste après.

Les variables proposées
Le menu regroupe les variables de contexte que l'éditeur connaît :
| Groupe | Variable | Libellé dans le menu |
|---|---|---|
| Appelant | {{caller.phone_number}} | Téléphone |
| Appelant | {{caller.name}} | Nom |
| Appelant | {{caller.email}} | |
| Appel | {{call.timestamp}} | Horodatage |
| Appel | {{call.id}} | Identifiant |
| Appel | {{calledNumber}} | Numéro appelé |
| Contexte | {{company}} | Société |
| Contexte | {{currentDate}} | Date du jour (auto) |
| Contexte | {{lang}} | Langue |
Une variable proposée n'a une valeur que si la conversation la fournit. Le nom ou l'e-mail de l'appelant, par exemple, ne sont pas connus d'un simple appel entrant : il faut les transmettre au démarrage ou les retrouver pendant la conversation (voir Exemple : personnaliser l'accueil).
Variables standard et personnalisées
Vous pouvez écrire n'importe quel autre nom, par exemple {{numero_contrat}} : c'est une variable personnalisée, fournie à l'exécution. L'éditeur les distingue :
- dans le texte, une variable du catalogue et une variable personnalisée sont surlignées dans deux couleurs différentes ;
- sous le champ, la ligne Variables : récapitule toutes les variables détectées, avec la même distinction. Au survol, une variable du catalogue affiche son libellé suivi de « variable standard », une variable personnalisée « Variable personnalisée (fournie à l'exécution) ».
Astuce
Relisez la ligne Variables : après chaque modification du prompt. Une faute de frappe ({{caler.name}}) y apparaît aussitôt comme variable personnalisée : c'est le signe qu'elle ne correspond à aucune variable du catalogue.
Exemple de prompt
Rôle : assistant d'accueil de {{company}}.
Contexte : nous sommes le {{currentDate}}. L'appelant appelle depuis le {{caller.phone_number}}.
Objectif : identifier le motif de l'appel et orienter vers le bon service.
Si le numéro de contrat {{numero_contrat}} est vide, demande-le avant toute autre question.Dans un flow
Dans un flow, les blocs partagent un état commun : tout ce qu'une fonction ou un bloc enregistre pendant la conversation est rangé sous state.parameters.<nom> et reste lisible par tous les blocs suivants. Pour le réutiliser dans un texte, écrivez {{state.parameters.<nom>}}.
Les champs qui acceptent des variables
| Bloc | Champs |
|---|---|
| Déclencheur | Prompt de rôle, Prompt de tâche |
| Agent LLM | Prompt de rôle, Prompt de tâche |
| Outil MCP | Arguments (JSON) |
| Message | Message à énoncer, Ton / persona |
| Raccrocher | Message d'adieu |
Ces champs portent une barre « Tapez {{ ou insérez » avec un bouton Insérer, et listent sous la saisie les variables qu'ils utilisent. La substitution a lieu à chaque entrée dans le bloc : si une valeur change entre deux passages, le texte suit.
Les variables proposées par l'éditeur
Le menu Insérer et le panneau Variables de l'éditeur plein écran (bouton Agrandir) proposent automatiquement :
| Origine | Variable proposée | Mention affichée |
|---|---|---|
Une écriture d'état d'une fonction, par exemple set parameters.email ← args.email | {{state.parameters.email}} | « écrite par nom de la fonction » |
La Variable de résultat d'un bloc Datastore, par exemple client | {{state.parameters.client}} | « résultat du bloc « libellé » » |
| Une variable déjà écrite dans un autre champ du flow | La même variable | « utilisée dans « libellé » » |
Les écritures d'état de toutes les fonctions du flow sont proposées dans tous les blocs, puisque l'état est partagé. Si la liste est vide, le menu indique « Aucune variable détectée — les écritures d'état des fonctions en créent. » : commencez par déclarer une écriture d'état dans une fonction (voir Fonctions appelables).
Dans l'éditeur plein écran, le panneau Variables se filtre avec Filtrer… ; un clic insère la variable au curseur, et la mention utilisée signale celles déjà présentes dans le texte.

Prévoir une valeur de repli
Une variable non résolue est remplacée par un texte vide. Pour éviter une phrase bancale, ajoutez une valeur de repli après || :
Bonjour {{state.parameters.prenom || Madame, Monsieur}}, merci de votre appel.Si prenom n'a pas encore été enregistré, l'IA reçoit « Bonjour Madame, Monsieur, merci de votre appel. ».
Valeurs fixes et chemins
Certains champs ne prennent pas un texte avec des {{…}}, mais une seule valeur, fixe ou lue dans la conversation au moment de l'exécution. Une valeur qui commence par state., args. ou result. est un chemin ; toute autre valeur est prise telle quelle.
| Préfixe | Ce qu'il désigne | Exemple |
|---|---|---|
state.parameters.… | Une information enregistrée pendant la conversation | state.parameters.email |
args.… | Un argument fourni par l'IA quand elle appelle la fonction | args.numero_commande |
result.… | Le retour de l'outil qui vient d'être exécuté | result.statut |
| Où | Champ |
|---|---|
| Fonction appelable | Valeur d'une écriture d'état (←), valeur observée d'une branche (si) |
| Datastore | Valeur cherchée, Identifiant de l'enregistrement, champs de l'enregistrement |
| Expéditeur, Destinataire, Objet, Corps (HTML) | |
| SMS | Expéditeur, Numéro, Texte du message |
| Raccrocher | Valeurs des Paramètres de fin |
| Validation humaine | Valeur par défaut d'un champ de décision |
Dans les Paramètres de fin et les champs de la Validation humaine, un bouton bascule chaque valeur entre texte fixe (abc) et chemin (path). En mode path, la valeur s'affiche précédée d'accolades, par exemple state.parameters.orderId.
Important
Les corps d'e-mail et de SMS ne mélangent pas texte et chemin : Votre commande state.parameters.numero est envoyé tel quel. Pour un contenu dynamique, faites préparer le texte complet par une fonction (écriture d'état), puis indiquez son chemin, par exemple state.parameters.message_sms.
Données d'une base de contacts
Dans une campagne d'appels sortants, chaque appel part d'une fiche de la base de contacts. L'agent qui appelle peut reprendre les colonnes de cette fiche dans son prompt avec la forme ${contact.<colonne>}, où <colonne> est le nom exact de la colonne :
Bonjour ${contact.prenom}, je vous appelle de la part du cabinet au sujet
de votre rendez-vous du ${contact.rdv_date} à ${contact.rdv_heure}.Pour vérifier le résultat, l'assistant de création de campagne affiche à sa première étape :
- l'Aperçu de l'ouverture : la première phrase du prompt qui commence par « Bonjour », remplie avec la première fiche valide de la base. Tant qu'aucune base n'est choisie, ou si une colonne est vide, la variable reste visible sous la forme ⟨prenom ?⟩ ;
- Variables détectées dans l'agent : les colonnes que l'agent attend. L'assistant y reconnaît
${contact.colonne}et aussi les variables simples sans point, comme{{rdv_date}}.
Si l'assistant indique « Aucune variable dans le prompt de l'agent », l'agent parlera sans personnalisation. Voir Créer une campagne.
Attention
La forme ${contact.…} n'est pas une variable {{…}} : l'éditeur d'agent ne la surligne pas, ne la liste pas dans Variables :, et le testeur de l'agent ne la remplace pas. Vérifiez vos colonnes dans l'aperçu de la campagne, et gardez des noms de colonnes simples (lettres, chiffres, _, sans accent ni espace).
Valeurs fournies au démarrage
Deux autres moyens fournissent des variables à l'ouverture de la conversation :
- Automatisations : le champ Variables par défaut (JSON, optionnel), par exemple
{ "reason": "rappel_commercial" }, est transmis à l'agent à chaque déclenchement, et un appel API peut le compléter. L'agent lit alors{{reason}}. Voir Automatisations. - Testeur : les Variables de test simulent les données d'une vraie conversation, en chat comme en voix. Voir Tester un agent.
Exemple : personnaliser l'accueil
Ce parcours identifie l'appelant dans une base « Clients », le salue par son nom et transmet sa référence à la fin de l'appel.
Enregistrer l'information donnée par le client
Dans le bloc Agent LLM « Identification », ajoutez une fonction liée à un outil qui reçoit l'adresse e-mail en argument (email), décrite « Quand le client a donné son adresse e-mail ». Dans son détail, ajoutez l'écriture d'état set parameters.email ← args.email.
Chercher la fiche
Ajoutez un bloc Datastore : Base « Clients », Opération Rechercher, Champ ciblé email, Valeur cherchée state.parameters.email, Variable de résultat client.
Réutiliser le résultat
Dans le Prompt de tâche du bloc suivant, cliquez sur Insérer et choisissez {{state.parameters.client}} (mention « résultat du bloc « … » »). Exemple : « Voici la fiche du client : {{state.parameters.client}}. Salue-le par son prénom et demande l'objet de son appel. »
Transmettre à la fin
Dans le bloc Raccrocher, ajoutez un Paramètre libre email_client, passez sa valeur en path et saisissez state.parameters.email. La valeur est enregistrée sur la transcription.
Vérifier les valeurs reçues
| Outil | Ce qu'il montre |
|---|---|
| Ligne Variables : (agent) et liste sous les champs (flow) | Les variables écrites dans le texte. |
| Variables de test du testeur | Les variables détectées dans le prompt, ainsi que caller.phone_number et call.timestamp, préremplies avec des valeurs d'exemple. |
| Transcription en mode debug, encadré Variables de départ | Les variables réellement transmises à l'ouverture de la conversation, avec leurs noms exacts. |
| Journal de diagnostic, ligne Entrée dans « Nœud » | Les Variables connues à l'entrée de chaque bloc. |
| Journal de diagnostic, avertissement orange | Une variable utilisée dans un prompt mais absente à l'entrée du nœud. |
Voir Transcriptions.
Attention
Le mode debug enregistre les variables de la conversation, qui peuvent contenir des données personnelles. Activez-le le temps d'un diagnostic.
Bonnes pratiques
- Insérez plutôt que de taper. Le menu évite les fautes de frappe, qui produisent une variable vide sans message d'erreur.
- Prévoyez l'absence. Dans un flow, ajoutez un repli
{{… || …}}à toute variable qui peut manquer. Dans le prompt d'un agent, écrivez la consigne à suivre si la valeur est vide (« si le nom est inconnu, demande-le »). - Ne comptez pas sur le testeur pour révéler un trou. Il préremplit les variables du prompt avec des valeurs d'exemple (« Testeur », un numéro de test, la date du jour). Videz une valeur dans Variables de test pour vérifier le comportement sans elle.
- Nommez de façon stable. Choisissez un nom par information (
email,numero_commande) et gardez-le dans tout le flow : l'éditeur propose les noms déjà utilisés. - Limitez les données personnelles dans les prompts au strict nécessaire pour la conversation.
Questions fréquentes
Vérifiez son orthographe dans la ligne Variables : ou sous le champ, puis ouvrez la transcription en mode debug : l'encadré Variables de départ et les entrées de nœud montrent les noms et valeurs réellement reçus. Une variable non résolue dans un flow devient un texte vide : ajoutez un repli {{… || …}}.
Le testeur préremplit les variables du prompt avec des valeurs d'exemple. Sur un vrai appel, le nom de l'appelant n'est connu que s'il est transmis au démarrage ou retrouvé pendant la conversation, par exemple par une recherche dans une base de données à partir du numéro.
Pas sous la forme {{…}}. Ces champs prennent un texte fixe ou un chemin unique. Faites préparer le texte par une fonction (écriture d'état), puis indiquez son chemin state.parameters.….
Oui, au démarrage de l'appel, à condition que chaque clé soit un identifiant (lettres, chiffres, _, éventuellement pointé) sans conflit avec une autre clé, et que l'ensemble ne dépasse pas 16 Ko.
À la première étape de l'assistant de création de campagne, Variables détectées dans l'agent les liste, et l'Aperçu de l'ouverture montre le rendu avec une vraie fiche.
Pour aller plus loin
Écrire le prompt d'un agent
Rédiger un prompt système clair pour un agent vocal ou chat, avec un modèle à copier, les règles propres au téléphone, les erreurs courantes et une méthode pour l'améliorer au testeur.
Configurer la voix d'un callbot
Régler la transcription, la synthèse vocale, la prononciation, le tour de parole et la fin d'appel d'un agent vocal.