Skip to main content
Les variables personnalisées vous permettent d’écrire un assistant une seule fois et de personnaliser chaque appel. Plutôt que de coder en dur un nom, un rendez-vous ou un numéro de compte dans le prompt système, vous référencez un espace réservé comme {{customer_name}} et fournissez la valeur à chaque appel — depuis votre requête API, un lead de campagne, un webhook d’enrichissement entrant, ou le contexte système intégré à la plateforme.

Syntaxe de référence

Référencez une variable avec des doubles accolades — la forme à privilégier, compatible JSON :
L’ancienne syntaxe à accolade simple {customer_name} est également résolue, mais uniquement pour les clés effectivement connues (une variable définie ou système). Cela permet de préserver intactes les accolades littérales — par exemple du JSON dans le corps d’un outil. Tout espace réservé dont la clé est inconnue reste inchangé.

Définir des variables sur un assistant

Chaque assistant possède une liste de définitions de variables. Une définition comprend :
Les clés sont validées à l’enregistrement : un format invalide, une collision avec une variable système réservée, une clé en double ou un label manquant sont tous rejetés.

Où les variables sont substituées

Les valeurs sont substituées au début de l’appel, avant l’exécution du modèle ou du flow, dans les champs suivants :
  • Assistant : prompt système
  • Assistant : premier message (message d’accueil)
  • Nœud de flow start.greeting
  • Nœud de flow agent.instructions
  • Nœud d’outil du flow : URL de la requête et valeurs des en-têtes
Ainsi, un nœud d’outil peut appeler https://app.famulor.de/api/user/orders/{{order_id}} ou envoyer Authorization: Bearer {{api_token}} avec des valeurs propres à chaque appel.

Sources de valeur et priorité

Une valeur peut provenir de plusieurs sources. Au début de l’appel, le worker résout chaque clé selon cet ordre de priorité, du plus élevé au plus faible :
  1. Explicite — valeurs transmises avec l’appel : variables de l’API make-call, ou les champs personnalisés d’un lead de campagne mappés sur les clés correspondantes.
  2. Webhook de variables entrant — enrichissement récupéré au début de l’appel (voir ci-dessous).
  3. Variables système — renseignées par la plateforme à partir du contexte de l’appel.
  4. Valeur par défaut — le default_value de la définition.
Un espace réservé sans valeur à aucun de ces niveaux reste tel quel.

Valeurs explicites via l’API

Leads de campagne → variables

Dans une campagne, chaque lead porte des champs personnalisés libres (leads.custom_fields). Au moment de la composition, le champ personnalisé d’un lead est mappé sur une variable portant la même clé. Une colonne CSV devient ainsi une variable :
Ici, les colonnes customer_name et appointment_date alimentent {{customer_name}} et {{appointment_date}} pour chaque appel. Attribuez source: "lead" à une variable issue d’un lead pour documenter son origine.

Variables système

Ces clés sont toujours disponibles et renseignées par le worker au début de l’appel. Elles sont réservées : vous ne pouvez pas définir une variable personnalisée portant l’une de ces clés.

Webhook de variables entrant

Pour les appels entrants, vous ne connaissez souvent pas l’appelant à l’avance. Configurez un webhook de variables sur l’assistant (variable_webhook_url + variable_webhook_secret) : le worker l’appelle au début de l’appel pour enrichir les variables — par exemple en recherchant un client à partir de son numéro d’appelant.

Requête

Le worker envoie une requête POST avec un corps JSON :
Le corps brut de la requête est signé en HMAC-SHA256 à l’aide du variable_webhook_secret de l’assistant, envoyé dans l’en-tête :

Réponse

Renvoyez les variables à fusionner :
Ces valeurs se fusionnent au-dessus des variables système et des valeurs par défaut, mais en dessous de toute valeur explicite transmise à l’appel. La requête expire au bout d’environ 5 s ; un échec n’est pas bloquant — le worker le journalise et poursuit avec les valeurs déjà disponibles.

Automatisation native (alternative)

Plutôt qu’un variable_webhook_url personnalisé, vous pouvez créer une Automatisation avec le déclencheur Injecter des variables d’entrée (call.variables) rattaché à l’assistant. Au début de l’appel, le worker exécute cette automatisation de façon synchrone et attend une action Renvoyer les variables (même structure { variables: {…} }). En l’absence d’automatisation active correspondante, l’URL du webhook classique est utilisée en repli.

Vérifier la signature

Calculez toujours le HMAC sur les octets bruts du corps de la requête, jamais sur un objet resérialisé — la resérialisation peut modifier les espaces ou l’ordre des clés et casser la signature. Utilisez une comparaison à temps constant.

Exemple de requête

API et MCP

  • GET /v1/assistants/{id}/variables — lit les définitions de variables de l’assistant ; scope assistants:read.
  • PATCH /v1/assistants/{id}/variables — remplace les définitions de variables ; scope assistants:write.
  • Outils MCP : get_assistant_variables, set_assistant_variables.
La référence REST complète se trouve sur docs.famulor.io. Utilisez {{key}} partout où vous avez besoin d’une valeur propre à l’appel, gardez vos clés en snake_case, et donnez à chaque variable un default_value pertinent pour que les appels se dégradent proprement en cas de source manquante.