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

SourceExempleOù l'écrireForme
Contexte de la conversationNuméro de l'appelant, numéro appelé, date du jourPrompt système de l'agent, champs {{…}} d'un flow{{caller.phone_number}}
Informations collectées pendant la conversationE-mail dicté par le client, fiche trouvée dans une baseChamps {{…}} d'un flow, chemins{{state.parameters.email}}
Colonnes d'une base de contactsPrénom, date de rendez-vous d'un contact de campagnePrompt système de l'agent qui appelle${contact.prenom}
Valeurs fournies au démarrageVariables par défaut d'une automatisation, variables de testPrompt 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.

  1. Placez le curseur à l'endroit voulu.
  2. Tapez {{, ou cliquez sur Insérer une variable. Un menu s'ouvre, avec un champ Rechercher une variable….
  3. Tapez quelques lettres pour filtrer, par nom ou par libellé (« tél » trouve Téléphone).
  4. Cliquez sur la variable : elle est insérée sous sa forme complète, et le curseur se place juste après.

Le menu Insérer une variable du prompt système

Les variables proposées

Le menu regroupe les variables de contexte que l'éditeur connaît :

GroupeVariableLibellé dans le menu
Appelant{{caller.phone_number}}Téléphone
Appelant{{caller.name}}Nom
Appelant{{caller.email}}E-mail
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

BlocChamps
DéclencheurPrompt de rôle, Prompt de tâche
Agent LLMPrompt de rôle, Prompt de tâche
Outil MCPArguments (JSON)
MessageMessage à énoncer, Ton / persona
RaccrocherMessage 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 :

OrigineVariable proposéeMention 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 flowLa 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.

Le panneau Variables de l'éditeur plein écran d'un prompt de bloc

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éfixeCe qu'il désigneExemple
state.parameters.…Une information enregistrée pendant la conversationstate.parameters.email
args.…Un argument fourni par l'IA quand elle appelle la fonctionargs.numero_commande
result.…Le retour de l'outil qui vient d'être exécutéresult.statut
OùChamp
Fonction appelableValeur d'une écriture d'état (←), valeur observée d'une branche (si)
DatastoreValeur cherchée, Identifiant de l'enregistrement, champs de l'enregistrement
E-mailExpéditeur, Destinataire, Objet, Corps (HTML)
SMSExpéditeur, Numéro, Texte du message
RaccrocherValeurs des Paramètres de fin
Validation humaineValeur 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

OutilCe qu'il montre
Ligne Variables : (agent) et liste sous les champs (flow)Les variables écrites dans le texte.
Variables de test du testeurLes 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épartLes 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 orangeUne 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

Pour aller plus loin

Sur cette page