Configuration de l'agent

Les onglets Initialisation et Paramètres de l'éditeur d'agent, ainsi que l'onglet Voice & AI de chaque nœud dans Workflow d'agent, exposent tous les paramètres configurables. De la sélection du fournisseur IA à la gestion du silence et du contexte, chaque champ au niveau de l'agent correspond directement à une propriété stockée sur l'agent ; les surcharges par nœud (y compris la gestion du silence, désormais personnalisable par nœud) vivent sur le nœud de flux à la place.

Agent Initialization settings

Prompt système

Le prompt système est le jeu d'instructions principal envoyé au LLM au début de chaque appel. Il définit la personnalité, le rôle, le périmètre et les contraintes strictes de l'agent.

Vous êtes Sophie, une chargée de support client pour TechCorp.
Votre objectif est d'aider les appelants avec leurs questions de facturation et problèmes de compte.

Règles :
- Gardez les réponses en moins de 2 phrases. C'est un appel téléphonique, pas un chat.
- Ne révélez jamais les tarifs internes ou les informations sur les concurrents.
- Si vous ne pouvez pas résoudre le problème, dites : "Je vous transfère vers un spécialiste."
- Confirmez toujours le nom de l'appelant avant d'accéder à son compte.
- Répondez dans la même langue que l'appelant.

Le prompt système au niveau de l'agent s'applique au nœud Welcome lorsqu'il est en mode conversationnel. Chaque nœud Agent dans le flux possède son propre prompt système indépendant, celui au niveau agent n'est pas automatiquement hérité par les nœuds du flux.

Injection de variables : toute variable disponible au démarrage de l'appel peut être référencée avec la syntaxe {{nom_variable}}. Les variables définies via les en-têtes SIP ou les appels API d'initialisation sont disponibles dès le premier nœud.

Vous appelez {{customer_name}} au sujet de son abonnement {{product}}.
Son identifiant de compte est {{account_id}}.

Rédiger des prompts efficaces

  • Personnalité en premier, nom, rôle, entreprise, ton (amical, professionnel, concis)
  • Limites explicites, quels sujets sont hors périmètre, quoi dire quand on est bloqué
  • Réponses courtes, les agents vocaux ne doivent jamais produire de listes ou de puces ; précisez-le
  • Comportement de repli, quoi faire quand l'appelant pose une question hors périmètre
  • Langue, si l'agent doit rester dans une seule langue, dites-le explicitement
  • Pas de mise en forme, le TTS lit les astérisques et symboles littéralement ; utilisez uniquement de la prose simple

Messages statiques

Ces messages sont prononcés textuellement via TTS (non générés par le LLM). Ils supportent l'interpolation {{variable}}.

ChampQuand il est joué
silence_messagesL'échelle de silence : une liste ordonnée de phrases, dont une est prononcée à chaque période de silence de l'appelant (premier silence → première phrase, deuxième silence → deuxième phrase, et ainsi de suite). Dix entrées au maximum. Une fois la liste épuisée, l'agent emprunte la sortie de silence, voir Comportement & timing. Comme chaque entrée n'est prononcée qu'une seule fois, elle peut poser une vraie question (« Souhaitez-vous que je vous passe un conseiller ? ») : la réponse de l'appelant parvient à l'agent comme n'importe quel autre tour de parole. Laissez la liste vide pour désactiver entièrement la détection du silence, au niveau de l'agent uniquement : sur l'onglet Voice & AI d'un nœud, une liste vide signifie hériter, et le commutateur de désactivation par nœud est plutôt l'option Off for this node.
silence_messageDéprécié, conservé pour les intégrations existantes. Ce champ reflète la première entrée de silence_messages et est réécrit automatiquement à chaque enregistrement de l'échelle. Les agents créés avant l'échelle ne stockent que ce champ : le runtime reconstruit alors une échelle à partir de lui (voir max_silence_repetitions), leur comportement est donc inchangé. L'API accepte les deux, mais silence_messages l'emporte et le miroir est recalculé à partir de lui.
transfer_messageMessage par défaut prononcé par un nœud Transfer avant le déclenchement du transfert. Peut être personnalisé nœud par nœud.
goodbye_messagePhrase d'adieu, prononcée juste avant que l'agent ne raccroche parce que l'appelant a cessé de répondre : l'échelle de silence est épuisée et sa sortie est « terminer l'appel ». Laissez vide pour raccrocher sans adieu. Ce n'est pas le message par défaut d'un nœud Hangup : un nœud Hangup prononce son propre champ message. Se règle dans l'onglet Initialisation et vaut pour tout le workflow, pas nœud par nœud.

Le message d'accueil est configuré sur le nœud Welcome dans l'éditeur de flux (champ : message), et non comme paramètre global de l'agent. Cela permet d'avoir des messages d'accueil distincts pour les flux entrants et sortants sur le même agent.

Reconnaissance vocale (STT)

Le moteur STT convertit l'audio de l'appelant en texte en temps réel. Choisissez le fournisseur et le modèle qui correspondent le mieux à votre langue et à vos exigences de latence.

ParamètreDéfautDescription
stt_providerPremier fournisseur actifLe service STT. Prérempli à la création avec le premier fournisseur STT actif de votre organisation. Les fournisseurs disponibles sont configurés par les administrateurs de la plateforme ; les utilisateurs clients choisissent depuis la liste déroulante configurée pour leur organisation. Les différents fournisseurs supportent des langues et des formats audio différents.
stt_languagefrCode de langue BCP-47 (ex : fr, en, en-US, es). Sélectionne le modèle acoustique et le vocabulaire. C'est la langue principale de l'agent, la première de la liste Languages ; voir Langues pour en ajouter.
stt_model-Variante de modèle spécifique au fournisseur. Laissez vide pour utiliser le modèle par défaut du fournisseur pour la langue choisie.
stt_keywords[]Termes spécifiques au domaine pour améliorer la précision de reconnaissance, ajoutés un par un comme étiquettes dans le champ de mots-clés de l'éditeur (tapez un terme, appuyez sur Entrée). Utile pour les noms de produits, codes ou jargon technique, ex : SIMLOCK, IMEI, 4G+, fibre. Un nœud Agent peut ajouter ses propres mots-clés au niveau du nœud, qui fusionnent avec cette liste par défaut via le mode Add to Initialization keywords (un sélecteur permet de passer à Replace Initialization keywords), voir Types de nœuds → Agent.

Le réglage de la fin d'énoncé se fait au niveau du fournisseur (par les administrateurs), pas sur l'agent. Le contrôle principal est le seuil EOU (eou_ms), le nombre de millisecondes de silence que le moteur STT attend avant de déclarer que l'appelant a fini de parler. Selon le fournisseur, les administrateurs peuvent disposer de réglages d'endpointing supplémentaires à ajuster, permettant d'arbitrer entre réactivité et risque de couper l'appelant en milieu de phrase.

Langues (agents multilingues)

Un agent parle une ou plusieurs langues. La liste se règle dans Initialization → Agent → Languages (dans la carte Speech-to-Text quand votre organisation dispose de plusieurs fournisseurs de reconnaissance vocale). La première langue est la langue principale : l'accueil et le résumé de fin d'appel l'utilisent toujours, et les textes que vous rédigez sont dans la langue principale, avec des traductions facultatives pour les autres langues. Ajoutez d'autres langues quand le même agent doit répondre à des appelants de plusieurs langues : pendant l'appel, l'agent suit la langue parlée par l'appelant et change automatiquement de langue de réponse et de voix.

La liste Languages de l'onglet Initialization (français en langue principale, anglais ajouté), les voix par langue dans la carte Voice et les traductions Other languages des messages automatiques

Configurer les langues

  • Ajoutez une langue avec la liste déroulante + Add a language…. Une nouvelle langue s'ajoute en fin de liste ; elle ne devient jamais langue principale d'elle-même.
  • Réordonnez avec les flèches Move up / Move down, retirez une langue avec la croix. Placer une langue en tête en fait la langue principale, avec le même effet que Set as main. Un agent garde toujours au moins une langue.
  • Set as main fait d'une langue la langue principale. Les textes d'au revoir, de silence et de transfert ainsi que les messages des étapes du flux sont échangés avec leur traduction dans la nouvelle langue principale. Les textes encore sans traduction sont conservés et signalés comme restant à traduire. Enregistrez pour garder le changement.
  • Chaque langue porte un badge. Full support : prise en charge native des dates, des nombres épelés et des détails de ce type (français, anglais, espagnol, portugais, allemand, italien, néerlandais, polonais). Supported : la langue fonctionne, mais la compréhension des dates et des nombres épelés peut être moins précise.
  • Une langue n'est proposée que si votre fournisseur TTS dispose d'une voix pour elle.

Plusieurs langues exigent un fournisseur de reconnaissance vocale capable d'identifier la langue parlée. Avec un fournisseur qui ne le peut pas, l'éditeur affiche un avertissement, l'agent reste limité à une langue et la liste d'ajout est masquée. Demandez à votre interlocuteur Manivox quels fournisseurs sont activés pour votre organisation.

Voix et messages par langue

La carte Voice affiche une ligne par langue, la principale marquée Main. Chaque langue a sa propre voix et sa propre vitesse (Speed, de 0,6 à 1,5). Une langue laissée sans voix utilise une voix par défaut de cette langue ; une langue laissée sans vitesse reprend la vitesse de la langue principale.

Dans la carte Conversation Behavior, un bloc repliable Other languages apparaît dès que l'agent a plus d'une langue : l'un sous les relances de silence, l'autre sous le message d'au revoir (affiché quand l'appel se termine après la dernière relance). Ils contiennent les traductions de ces textes. Laissez une traduction vide pour dire le texte de la langue principale avec la voix principale : l'agent ne lit jamais un texte avec la voix d'une autre langue.

Chaque en-tête Other languages fermé indique ce qui est traduit, par exemple English 1/2, en orange quand il manque des traductions dans une langue, et un bloc partiellement traduit s'ouvre de lui-même. Les mêmes en-têtes figurent dans les fenêtres des nœuds. Sur le canevas, l'audit du flux signale une étape qui a son propre texte (relances de silence, message, message de transition ou de repli) sans traduction dans une des langues de l'agent : les appelants de cette langue l'entendront dans la langue principale. C'est permis ; l'avertissement le rend seulement visible. Dans la fenêtre d'un nœud, OK garde vos modifications dans l'éditeur : cliquez sur Save pour les conserver.

Fonctionnement de la bascule pendant l'appel

  • L'accueil est toujours prononcé dans la langue principale, avec la voix principale.
  • L'agent bascule dès que l'appelant dit une phrase de 4 mots ou plus dans une autre langue de la liste, ou après deux réponses courtes d'affilée dans cette même langue. Sinon l'appel reste dans sa langue courante.
  • Des chiffres seuls, du bruit et les réponses données pendant que l'agent recueille un nom, une adresse e-mail ou un numéro de téléphone ne déclenchent jamais de bascule.
  • Après une bascule, la réponse suivante utilise la nouvelle langue avec sa voix, sa vitesse et son dictionnaire de prononciation, et les messages automatiques utilisent leur traduction. Une réponse déjà commencée n'est jamais basculée en cours de route.
  • L'agent ne bascule qu'entre les langues de la liste. Un appelant qui parle une autre langue reçoit des réponses dans la langue courante.

Langue par étape

L'onglet Voice & AI d'un nœud Agent sur un agent multilingue : le champ Language sur Follow the caller, et une voix et une vitesse par langue sous Speaking (TTS)

Sur un agent multilingue, le champ Language d'un nœud Agent (groupe Listening (STT) de son onglet Voice & AI) ou d'un nœud Chatbot (son onglet Listening (STT)) propose Follow the caller (détection parmi les langues de l'agent, par défaut) ou Pin to une langue. Une étape épinglée tourne toujours dans cette langue et ne bascule jamais ; quand l'appel la quitte, la détection reprend depuis la langue courante. Les mêmes dialogues portent une voix et une vitesse par langue (sur un nœud Chatbot, dans son onglet Speaking (TTS)). Les textes des nœuds ont leurs propres traductions Other languages : sur un nœud Agent, la phrase d'ouverture dite quand l'appel arrive d'une autre étape, ses relances de silence, ses messages de transition des routes de sortie et ses messages d'attente d'outil ; sur un nœud Chatbot, ses messages de transition des routes de sortie ; sur les nœuds Transfer et Hangup, leur message parlé. Voir Types de nœuds → Agent.

N'écrivez pas « réponds toujours en français » dans le prompt système : cette consigne contrarie la bascule de langue, et l'éditeur affiche un avertissement quand il en détecte une. Gardez des instructions neutres quant à la langue et laissez la liste Languages décider. Les changements de la liste Languages s'appliquent aux appels une fois la version mise en ligne (Make live).

Limites connues : les réponses très courtes sont reconnues un peu moins fiablement que les phrases complètes, et des voix en arrière-plan dans une autre langue peuvent parfois produire une réponse dans la mauvaise langue avant que l'appel ne revienne à la normale.

Grand modèle de langage (LLM)

Le LLM génère les réponses de l'agent tour par tour. Tous les fournisseurs configurés par votre administrateur apparaissent dans la liste déroulante.

ParamètreDéfautDescription
llm_provider-Le backend LLM. Choisissez dans la liste de modèles validés par la plateforme (compatibilité testée, tool calls inclus), ou branchez votre propre endpoint compatible OpenAI avec votre propre clé API.
llm_model-Identifiant de modèle transmis au fournisseur (ex : gpt-4o), sélectionné dans la liste de modèles validés ou parmi ceux proposés par votre propre endpoint.
temperature0.7Température d'échantillonnage (0–2). Plus basse = plus déterministe, plus haute = plus créative. Pour les agents support, 0.3–0.5 réduit les hallucinations. Pour la vente, 0.7–0.9 sonne plus naturel.
max_tokens500Tokens maximum par réponse. Gardez entre 150–300 pour la voix, les appelants ne peuvent pas interrompre une réponse de 500 tokens.
disable_thinkingfalsePour les modèles qui supportent la chaîne de pensée / tokens de réflexion : définissez true pour ignorer l'étape de raisonnement et réduire la latence de 100–300 ms. Recommandé pour les flux transactionnels simples.
reasoning_effortAutomatiqueModifie l'effort de raisonnement envoyé à votre modèle : none, minimal, low, medium, high, ou xhigh. Laissez sur Automatique sauf si vous connaissez précisément votre endpoint, une valeur non supportée peut provoquer une erreur ou désactiver silencieusement les appels d'outils.

disable_thinking et reasoning_effort n'apparaissent dans l'éditeur que pour les fournisseurs LLM personnalisés (configurés par le client). Les fournisseurs de la liste de modèles validés par la plateforme sont déjà réglés par Manivox, ces contrôles restent donc masqués pour eux.

Pour la liste des modèles validés (Google, OpenAI, Groq) et comment brancher votre propre fournisseur avec votre clé API, voir Modèles compatibles & clé personnelle (BYOK).

Modèle d'aiguillage des sorties

Lorsque la conversation doit passer à une autre étape, un modèle distinct et plus rapide peut prendre cette décision à la place du LLM principal, c'est ce qui alimente les routes de sortie conversationnelles sur les nœuds Welcome et Agent. Il s'exécute en parallèle du LLM principal, donc utiliser ici un modèle petit et rapide économise ~250 ms par tour. Laissez-le vide (l'option Platform default) et la classification s'exécute sur un modèle rapide désigné par la plateforme, réglé spécifiquement pour cette tâche. Les routes de sortie basées sur une règle n'utilisent jamais ce modèle : elles sont vérifiées de manière déterministe par le moteur de flux, sans aucun appel LLM, voir Types de nœuds → Routes de sortie basées sur des règles.

ParamètreDescription
clf_llm_providerFournisseur pour les tâches de classification. Si non défini, le modèle de classification par défaut de la plateforme est utilisé.
clf_llm_modelUn modèle plus léger/rapide pour la classification que le LLM principal.

Synthèse vocale (TTS)

Le moteur TTS convertit les réponses textuelles du LLM en audio diffusé en temps réel vers l'appelant.

ParamètreDéfautDescription
tts_provider-Le service TTS. Les fournisseurs disponibles dépendent de la configuration de l'administrateur.
tts_model-Variante de modèle proposée par le fournisseur. Les différents modèles offrent un compromis qualité / latence (ex : sonic-2 pour Cartesia).
tts_voice-Identifiant de voix depuis la bibliothèque du fournisseur. Parcourez et préécoutez les voix via le sélecteur de voix dans Initialisation → Synthèse vocale → Voix, ou choisissez une voix propre à un nœud dans le groupe Speaking (TTS) de son onglet Voice & AI (nœuds Welcome/Agent). Un agent multilingue a une voix et une vitesse par langue, voir Voix et messages par langue.
tts_speed1.0Multiplicateur de vitesse de restitution (0.6–1.5, la plage supportée par Cartesia). Réduisez à 0.85 pour la clarté avec les appelants âgés ; augmentez à 1.15 pour les scripts sortants denses.

Si une voix précédemment sélectionnée disparaît de la bibliothèque, l'éditeur conserve la voix assignée (tts_voice) sélectionnée et affiche un avertissement ambre « retirée — à réassigner » au lieu d'un sélecteur vide trompeur, afin que vous puissiez choisir un remplacement sans perdre la trace de ce qui était configuré. Pour Cartesia, la bibliothèque de voix cloud fait foi pour les noms de voix : les déploiements on-prem reflètent les noms du cloud, et les voix retirées sont supprimées en douceur (soft-delete) plutôt qu'effacées.

Règles d'expressivité (couche vocale)

La plateforme ajoute automatiquement un bloc de règles de sortie vocale à chaque prompt de nœud Agent, vous n'avez donc pas besoin d'écrire (ni de contrer) ces règles vous-même :

  • L'emphase sur un seul mot avec des *astérisques* est autorisée et encouragée, ex : « La table est *disponible* demain ! ». Le mot entre astérisques doit faire partie de la phrase prononcée.
  • [laughter] est la seule balise non verbale supportée. Les autres balises entre crochets ([smile], [sigh]…) sont lues à voix haute, ne les utilisez donc pas.
  • Les étiquettes d'émotion isolées et les didascalies (ex : (joyeusement), [excité]) sont interdites, car le TTS les prononcerait littéralement.

Rédigez vos prompts en prose simple et laissez cette couche gérer la diction. Voir Rédaction des prompts pour des conseils de rédaction approfondis.

Comportement & timing

Conversation Behavior dans l'onglet Initialization : les invites de silence ordonnées, Add a prompt, et la sortie quand l'appelant reste silencieux (End the call ou Continue at a step)

Ces paramètres contrôlent quand l'agent parle après un silence et comment l'appel se termine quand l'appelant arrête de répondre. Ce sont les valeurs par défaut au niveau de l'agent, définies dans l'onglet Initialisation. Un agent tout neuf démarre avec une échelle de deux relances dans sa propre langue, une courte sollicitation puis une question explicite (français : Allo ? puis Vous êtes toujours là ? ; anglais : Hello? puis Are you still there?), plutôt qu'une seule phrase répétée. Tout nœud Welcome ou Agent peut les remplacer (ou désactiver les relances de silence pour ce nœud) dans la section Conversation Behavior de son onglet Voice & AI, voir Types de nœuds → Agent.

ParamètreDéfautDescription
take_turn_after_silence7 sSecondes de silence continu (après la fin de la parole de l'agent) avant que l'agent prononce la phrase suivante de silence_messages. Le minuteur de silence ne démarre qu'après la fin de lecture du dernier audio de l'agent. Réduisez (2–3 s) pour les flux sortants automatisés, augmentez (8–10 s) pour les appelants humains qui réfléchissent.
max_silence_repetitions3Déprécié, conservé pour les intégrations existantes. Ce champ reflète l'échelle sous la forme nombre d'entrées + 1 et est réécrit à chaque enregistrement. Il n'a jamais signifié « nombre de fois où le message est prononcé » : le runtime prononce le silence_message à chaque silence jusqu'à max_silence_repetitions - 1, puis emprunte la sortie de silence au suivant — 3 correspond donc à deux relances puis un raccrochage, avec la raison silence_timeout. C'est exactement l'échelle reconstruite pour les agents antérieurs à silence_messages.
silence_target_node_idaucuneÉtape à laquelle un appelant silencieux poursuit une fois l'échelle épuisée, au lieu de voir l'appel se terminer : elle se choisit dans une liste déroulante des étapes du workflow, dans l'onglet Initialisation. Un nœud Welcome ou Agent peut désigner une autre destination sur son onglet Voice & AI. Laissez vide pour terminer l'appel à la place, après avoir prononcé le goodbye_message. Les étapes ainsi désignées portent une pastille ambre en forme de cloche sur le canevas, car la destination est une propriété de la conversation et non un lien que vous dessinez. Deux garde-fous : la destination est vérifiée à l'enregistrement, une étape supprimée ne peut donc pas rester référencée ; et un même appel n'emprunte la sortie de silence que trois fois au maximum avant de se terminer, une étape qui se désigne elle-même ne bouclera donc pas indéfiniment.
spelling_patiencefalseLorsque true, le seuil EOU est augmenté pour permettre des pauses plus longues entre les caractères épelés. Activez pour les flux où les appelants épellent des adresses e-mail ou des codes de référence lettre par lettre. Notez qu'un mécanisme automatique distinct relâche déjà l'endpointing pour un seul tour chaque fois que la question de l'agent attend une réponse dictée (une adresse e-mail, une adresse postale, un numéro de téléphone, une plaque d'immatriculation, une référence épelée, un IBAN ou le nom d'une personne), ce réglage global n'est donc nécessaire que lorsque des flux entiers sont fortement axés sur la dictée.
recording_enabledtrueEnregistre l'audio de l'appel. Les enregistrements sont stockés côté serveur en fichiers WAV et accessibles via GET /api/calls/{id}/recording.

Variables d'initialisation

Les variables d'initialisation (input_variables) définissent quelles variables sont peuplées avant l'exécution de tout nœud. Elles sont déclarées dans l'onglet Initialisation de l'agent, où chaque variable choisit une source d'action de démarrage :

SourceLibellé dans l'éditeurDescription
httpRequête HTTPRécupérée depuis un endpoint HTTP externe au démarrage de l'appel, avant l'exécution du nœud de départ. Supporte {{variable}} dans l'URL et les en-têtes. Son authentification est soit des en-têtes que vous saisissez, soit une connexion de service web qui signe la requête (voir plus bas). Si la requête échoue avec stopOnError: true, l'appel se termine avec un message d'erreur configuré avant le démarrage du flux.
connectorAction connecteurExécute une action de connecteur (Composio) au démarrage de l'appel et mappe les champs de son résultat sur vos variables. Voir Connecteurs pour configurer l'intégration.
web_serviceService webExécute au démarrage de l'appel une des actions d'une connexion de service web : choisissez la connexion et l'action, renseignez ses paramètres (valeurs ou {{variable}}), puis mappez la réponse sur vos variables. L'URL, la méthode et les identifiants viennent de la connexion, OAuth 2.0 compris.
sip_headerEn-tête SIPMappe sur vos variables les métadonnées injectées par l'opérateur dans les en-têtes SIP de l'appel entrant. Sept en-têtes sont supportés (X-MAI-Custom1 à X-MAI-Custom5, X-MAI-User-to-User et Diversion), choisis dans une liste déroulante ; la casse des noms est ignorée. Voir En-têtes SIP.
lookupTable de correspondanceCherche une valeur dans une des tables de correspondance du compte (par exemple {{to_number}}, le numéro composé par l'appelant) et remplit une variable par colonne de la ligne trouvée. Aucune requête n'est envoyée. Voir Tables de correspondance.
csv_inputCSV InputPeuplée depuis les colonnes CSV mappées du contact quand l'appel est passé par une campagne sortante, ainsi que lors d'un rappel reconnu de l'un de ses contacts. Déclarer la variable ici est optionnel : chaque colonne mappée atteint de toute façon l'agent sous forme de variable chaîne. Une déclaration ajoute un type, une valeur par défaut et une validation de champ requis, et le nom doit correspondre à celui choisi dans le mapping de colonnes de la campagne.
demo_prospect (intégrée)Demo prospectVisible uniquement par les super-administrateurs (et en mode usurpation d'une organisation). Injecte des données de prospect de démonstration fournies par la plateforme et les mappe sur vos variables. Données de prospect injectées par la plateforme ; aucune URL ni aucun identifiant requis.

Les actions de démarrage s'exécutent avant le démarrage du flux. Les actions HTTP et connecteur s'exécutent séquentiellement ; si l'une échoue avec stopOnError: true, l'appel se termine immédiatement, utile pour se prémunir contre des données client obligatoires manquantes.

Signer une action de démarrage avec une connexion de service web

Une action au démarrage de type Web service qui appelle l'action get_repair_status d'une connexion

Quand votre API est protégée par un serveur de jetons (OAuth 2.0 client credentials, par exemple Keycloak ou une passerelle d'API), ne collez pas de jeton dans un en-tête : il expire, et un en-tête est stocké en clair. Utilisez plutôt une connexion de service web. La plateforme obtient alors le jeton, le renouvelle avant son expiration et, si votre API répond encore 401, en obtient un nouveau et réessaie une fois.

  • Type Service web : exécute une des actions de la connexion. Rien d'autre à configurer.
  • Type Requête HTTP avec Authentification : Connexion de service web : garde votre URL, votre méthode et votre corps, et ajoute les identifiants de la connexion. L'URL doit commencer par l'adresse de la connexion : le jeton n'est jamais envoyé ailleurs, et l'enregistrement est refusé sinon. Les en-têtes supplémentaires que vous ajoutez sont conservés. Une connexion qui envoie ses identifiants dans le corps de la requête ne peut pas signer une requête HTTP ; utilisez pour elle le type Service web.

Les identifiants et les jetons de la connexion n'apparaissent jamais dans les journaux d'appel ni sur la page de détail de l'appel.

Le même choix d'Authentification, avec les mêmes règles, existe sur une étape Appel API en mode API brute et sur un webhook des Actions de fin d'appel.

Listes d'éléments (ne garder que certains champs de chaque élément)

Beaucoup d'API répondent par une liste de longueur variable : une réparation pour un appelant, dix pour un autre, chaque élément contenant bien plus que ce dont l'agent a besoin (historique, adresses...). Ne créez pas une variable par position (premiere_reparation_reference...), qui casse dès qu'un appelant a plus d'éléments que prévu, et ne mappez pas la liste entière ($.data), qui envoie tous les champs à l'agent à chaque tour. Cliquez plutôt sur List of items sur la ligne du mapping, et ne gardez que les quelques champs utiles à l'agent. Le même bouton existe sur les actions de web service (Web services) et sur les étapes API Call en mode Raw API.

Mise en place dans une action de démarrage :

Une action de démarrage HTTP avec une ligne de mapping repairs depuis $.data[*], passée en List of items avec les champs reference, bike.model et status, l'aperçu de ce que lit l'agent et la variable repairs_count
  1. Dans l'onglet Initialization, ouvrez votre action de démarrage HTTP (ou ajoutez-en une) et renseignez son URL.
  2. Sous Response Mapping, cliquez sur Add mapping. Donnez un nom à la variable, par exemple repairs, et le chemin de la liste, par exemple $.data[*].
  3. Cliquez sur List of items sur la ligne. (Quand le chemin se termine par [*], une suggestion sous la ligne le propose aussi.)
  4. Pour chaque champ à garder, remplissez Field inside each item : le champ tel qu'il apparaît dans un élément, sans $.. Utilisez un point pour un champ rangé dans un autre : bike.model. Le Name the agent sees se remplit tout seul (model) ; modifiez-le si vous le souhaitez.
  5. Cliquez sur Add a field pour le champ suivant. Ne gardez que ce dont l'agent a besoin pour parler à l'appelant.
  6. Vérifiez l'aperçu, What the agent reads in {{repairs}}, et notez la variable de comptage, {{repairs_count}}.

L'agent lit alors une ligne numérotée par élément, quel que soit leur nombre :

1. reference: AT-2041; model: Urban 500; status: Waiting for parts
2. reference: AT-2057; model: Trail X; status: Ready for pickup

Utiliser la liste :

  • Dans un prompt : écrivez {{repairs}} là où l'agent doit voir la liste, par exemple « Réparations en cours de l'appelant : {{repairs}}. Aide-le pour celle dont il parle. »
  • Pour orienter l'appel : utilisez {{repairs_count}} dans des règles de sortie ou une étape Branch : égal à 0 (rien trouvé, ou la requête a échoué), égal à 1 (aller directement à l'élément), supérieur à 1 (demander lequel).
  • Pour retenir l'élément choisi par l'appelant : déclarez une variable collectée (par exemple chosen_reference) et réglez D'où vient la valeur sur Ce que dit l'appelant, ou choisi dans les données récupérées. Quand l'appelant dit « l'Urban 500 », la variable reçoit AT-2041 depuis la liste. Voir Variables d'initialisation.

Options des champs et limites :

OptionEffet
CleanupChaque champ a son propre nettoyage, par exemple lower case pour une marque écrite en majuscules, afin que la voix la lise naturellement.
Max. charactersUn texte long est coupé à 300 caractères par champ et se termine par « … ». Pour un champ que l'agent doit lire en entier (un commentaire, un message), fixez une limite plus haute, de 20 à 4 000. Chaque élément la répète à chaque tour : ne l'augmentez que là où c'est utile.
Champ absentSi un élément n'a pas ce champ, il est simplement omis de la ligne de cet élément.
LimitesJusqu'à 15 champs par liste. Seuls les 50 premiers éléments sont gardés dans la liste ; le nombre reste toujours le vrai total.

Les lignes numérotées sont ce que l'agent lit dans un prompt. Quand vous envoyez {{repairs}} dans le corps d'une requête d'API, la liste part en JSON simple, avec uniquement les champs gardés.

Ce n'est pas une source de démarrage : les variables collectées. Une variable dont la source est llm_collect n'est pas peuplée au démarrage de l'appel. C'est un concept distinct, une variable que vous déclarez pour que le LLM la recueille pendant l'appel : l'extracteur de variables parallèle, qui s'exécute aux côtés des tours des nœuds Agent, la renseigne au fur et à mesure que la conversation fait apparaître la valeur. Jusque-là, elle contient une valeur typée vide. Utilisez les sources d'initialisation ci-dessus pour les données que vous possédez avant la connexion de l'appel, et llm_collect pour les données que l'appelant fournit en parlant.

Variables collectées : d'où vient la valeur. Chaque variable collectée dispose d'un réglage D'où vient la valeur. Par défaut, Ce que dit l'appelant n'enregistre que ce que l'appelant a réellement dit. Choisissez Ce que dit l'appelant, ou choisi dans les données récupérées lorsque la valeur se trouve dans des données déjà récupérées pendant l'appel (appel API de démarrage, nœud API ou outil de service web). Exemple typique : l'agent énumère les trois dossiers de l'appelant par appareil et par date, l'appelant répond « celui du four », et la variable doit contenir la référence de ce dossier, que seules les données récupérées contiennent. Avec cette option, l'extracteur peut enregistrer cette référence lorsque l'appelant choisit ou confirme un élément, mais elle doit correspondre exactement à une valeur présente dans les données récupérées : une valeur inventée n'est jamais acceptée. N'écrivez pas dans le prompt des consignes du type « remplir la variable » : l'agent ne peut pas renseigner une variable lui-même, la variable est capturée automatiquement.

Tables de correspondance

Une action de démarrage Lookup table cherche une valeur dans une des tables de correspondance du compte avant que l'agent ne parle : le numéro composé par l'appelant donne la marque à annoncer, un code postal donne une agence. Elle remplit une variable par colonne de la ligne trouvée, plus le nombre de lignes trouvées (0 = introuvable). Guide pas à pas : Tables de correspondance.

Contrôles de format

Pour vérifier un code que l'appelant dicte (une plaque, un numéro de bon, un SIRET...), définissez un contrôle de format dans le compte et attachez-le à l'étape qui recueille le code : à chaque tour, l'agent reçoit la valeur propre ou la raison de l'erreur. Guide pas à pas : Contrôles de format.

Bases de connaissances globales

Le champ global_knowledge_bases configure quelles bases de connaissances sont recherchées pour le contexte RAG sur tous les nœuds Agent qui n'ont pas leur propre configuration KB. La configuration KB au niveau du nœud a la priorité sur le paramètre au niveau de l'agent.

Configurez les bases de connaissances globales dans l'onglet Paramètres, section Base de connaissances. Voir Configuration RAG pour les détails sur les paramètres de récupération.

Comportement sortant

Ces paramètres contrôlent le comportement de l'agent au début d'un appel sortant : la fenêtre entre le décrochage de la personne appelée et le premier énoncé de l'agent. Ils se trouvent dans l'onglet Paramètres, section Outbound Behavior, et la section n'apparaît qu'une fois que l'agent a au moins une campagne ; sur un agent uniquement entrant, elle ne serait que du bruit. Les valeurs enregistrées sont conservées tant qu'elle est masquée.

L'onglet Settings de l'éditeur d'agent : la section Outbound Behavior (attente du premier mot, délai, action, délai avant de parler) et l'onglet Campaigns listant les campagnes de l'agent
ParamètreDéfautDescription
Wait for first wordactivéAttendre que la personne appelée parle (« allô ») avant que l'agent ne commence à parler. Désactivé, l'agent parle dès que l'appel est connecté.
Wait Timeout3 sCombien de temps attendre ce premier mot avant d'appliquer l'action ci-dessous. Les agents créés avant septembre 2026 conservent la valeur qu'ils avaient enregistrée, typiquement 4 s.
If nobody speaks in timeStart speaking anywayStart speaking anyway joue quand même le message d'accueil, de sorte qu'une personne silencieuse mais présente entend tout de même l'agent ; Hangup termine l'appel silencieusement. Les agents créés avant septembre 2026 conservent leur choix enregistré, typiquement Hangup.
Speak Delay1 sPause avant le premier énoncé de l'agent une fois l'appel connecté ; absorbe les bruits de connexion de l'opérateur. S'applique quand Wait for first word est désactivé.

Quand la Détection de répondeur d'une campagne est activée (par défaut, quand votre ligne la propose), les répondeurs sont détectés par l'opérateur avant la connexion de l'appel : un appel de campagne décroché est donc une personne. Utilisez {{call_direction}} (outbound / inbound) dans le flux pour saluer différemment selon la direction, et voir Appels sortants pour la vue d'ensemble.

Actions de fin d'appel

End Flow Actions dans l'onglet Initialization : ajout d'une action webhook, puis restriction avec Fires on à des sorties Hangup ou Transfer précises

Le champ end_flow_actions, dans l'onglet Initialisation à côté des actions de démarrage, configure les appels webhook déclenchés après la fin d'un appel (après chaque appel, ou seulement après les sorties que vous choisissez, voir ci-dessous). Chaque action spécifie une URL, une méthode et un payload. Tous les placeholders {{variable}} sont résolus en utilisant l'état final des variables de l'appel avant l'envoi du webhook.

Cas d'usage courants : mises à jour CRM post-appel, journalisation de qualification de leads, archivage de transcription vers un système externe.

Limiter une action à certaines sorties. Par défaut, une action se déclenche à chaque fin d'appel. Réglez Se déclenche sur → Uniquement certaines sorties pour la restreindre aux appels terminés sur des nœuds raccrocher ou transfert précis — par exemple, envoyer le SMS de confirmation uniquement quand l'appel s'est terminé sur le raccrochage « rappel confirmé », ou appeler un service de liste rouge uniquement sur la sortie « appelant hostile ». Un appel où l'appelant raccroche en cours de flux n'atteint jamais de nœud de sortie : les actions limitées ne se déclenchent pas, les actions non limitées si. La sortie est aussi disponible dans les payloads via {{terminal_node_id}}.

Signer un webhook avec une connexion. Au lieu de saisir un en-tête Authorization, réglez l'Authentification de l'action sur Connexion de service web et choisissez une des connexions de service web du compte (clé API, Basic, Bearer ou OAuth 2.0). La plateforme ajoute les identifiants à l'envoi du webhook et renouvelle pour vous un jeton OAuth. L'URL doit commencer par l'URL de base de la connexion, sinon l'agent ne peut pas être enregistré, et les identifiants n'apparaissent jamais dans les journaux d'appel. Voir Signer une action de démarrage pour l'ensemble des règles.

Save vs Make live

L'éditeur sépare l'enregistrement de la mise en live, afin que vous puissiez affiner un agent, même un agent live, sans perturber les appelants. Deux actions dans l'en-tête :

  • Save, écrit l'état de l'éditeur comme nouvelle version nommée. Ne change jamais ce qu'entendent les appelants. Actif lorsqu'il y a des modifications non enregistrées.
  • Make live, promeut la version enregistrée affichée dans l'éditeur vers la version live qu'entendent les appelants. Actif uniquement lorsque l'éditeur est propre et que la version affichée n'est pas déjà live.

Le flux sûr sur un agent en production : éditer → Save (l'ancienne version reste live, les appelants ne sont pas affectés) → tester la nouvelle version dans le simulateur navigateur → Make live quand vous êtes confiant. Il n'y a pas de bascule « mode brouillon » ; ce modèle à deux verbes l'a remplacée.

Le mode brouillon n'est pas nécessaire car la facturation est par canal : les appels de test dans le navigateur sont toujours économiques (pas de téléphonie), et un agent sans version live ne peut tout simplement pas être appelé. Voir Versions pour le modèle complet.