> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ouraicalling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Référence des nœuds

> Tous les types de nœuds du générateur de flux, avec leurs champs et leur comportement

## Début

Point d'entrée de chaque flux. Définit le **message d'accueil** et le **mode de message d'accueil** :

* `agent speaks first` — le message d'accueil est prononcé dès que l'appel est connecté (cas typique d'un appel entrant).
* `user speaks first` — l'assistant attend que l'appelant parle en premier (cas typique d'un appel sortant : la personne appelée dit d'abord « Allô ? »).

## Agent

Un agent conversationnel avec son propre **nom**, ses **instructions** et un **remplacement de voix** facultatif. La conversation reste avec cet agent jusqu'à ce qu'il cède la main via l'une de ses connexions sortantes.

* Chaque connexion sortante devient un **outil de transfert** ; le libellé de la connexion est la description que le LLM utilise pour décider. Voir [pourquoi les libellés comptent](/flow-builder/overview#why-edge-and-agent-labels-matter).
* Si les instructions sont vides, le prompt système de l'assistant (prompt avancé) sert de base ; le texte du nœud est **ajouté**, pas remplacé.
* Le remplacement de voix permet à chaque agent de parler avec une voix différente.

## Condition

Un point de décision forcé. Vous y rédigez une **description** de la décision à prendre ; le LLM doit alors choisir exactement une connexion sortante en fonction des libellés de ces connexions. Utilisez ce nœud lorsque le routage doit se faire *maintenant*, plutôt que de laisser l'agent céder la main quand bon lui semble.

## Outil

Appelle un **endpoint HTTP** en cours de conversation et renvoie le résultat au LLM.

| Champ                                                       | Rôle                                                                                                           |
| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `name` / `description`                                      | Comment le LLM comprend ce que fait l'outil                                                                    |
| `url`, `method`, `headers`                                  | La requête HTTP (GET/POST/PUT/PATCH/DELETE)                                                                    |
| `params_schema`                                             | Schéma JSON des paramètres que le LLM doit extraire de la conversation                                         |
| `timeout_ms`                                                | Délai d'expiration de la requête                                                                               |
| `speak_during`                                              | Annonce prononcée au démarrage de l'outil                                                                      |
| `async`                                                     | `true` → la conversation continue pendant l'exécution de l'outil ; le résultat arrive dans un message de suivi |
| `filler_phrases`, `filler_delay_sec`, `filler_interval_sec` | Phrases prononcées à tour de rôle pendant les attentes longues                                                 |

<Tip>
  Pour les webhooks longs (écritures CRM, vérifications de disponibilité), activez `async` et ajoutez deux ou trois phrases de remplissage. L'appelant garde une conversation fluide pendant que la requête s'exécute en arrière-plan.
</Tip>

## Transfert (aveugle)

Transfère immédiatement l'appel vers un **numéro de téléphone ou un URI SIP** (SIP REFER), éventuellement précédé d'une courte **annonce**. L'assistant quitte l'appel ; la personne qui le reçoit n'est pas briefée.

## Transfert à chaud

Le transfert haut de gamme : l'appelant est mis en **musique d'attente**, l'assistant appelle la cible (un collaborateur), la **briefe avec un résumé généré par IA** de la conversation jusque-là, et ne connecte les deux parties qu'à ce moment précis. Le collaborateur peut accepter ou refuser ; la messagerie vocale de la cible est détectée.

| Champ                    | Rôle                                                                                                                                                                                      |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `number`                 | Cible (E.164 ou URI `sip:`)                                                                                                                                                               |
| `announcement_to_caller` | Ce que l'appelant entend avant d'être mis en attente                                                                                                                                      |
| `briefing_instructions`  | Instructions supplémentaires ajoutées au résumé de briefing automatique                                                                                                                   |
| `ringing_timeout_sec`    | Durée de sonnerie côté cible (5 à 120 s, 30 par défaut)                                                                                                                                   |
| `hold_music`             | Musique d'attente intégrée activée/désactivée (ou votre propre audio d'attente configuré)                                                                                                 |
| `fallback`               | Ce qui se passe si la cible ne répond pas ou refuse : `continue` pour poursuivre la conversation, `end` pour terminer l'appel, ou `cold_transfer` (transfert aveugle vers le même numéro) |

Les résultats du transfert à chaud (`started` / `completed` / `failed`) sont enregistrés comme événements d'appel.

## Collecte

Capture de données structurée, avec **validation, relance et confirmation intégrées** — bien plus fiable que d'espérer que le LLM retranscrive correctement une adresse e-mail.

* **Types :** `name`, `email`, `phone`, `address`, `date of birth`, `dtmf` (chiffres au clavier), `credit_card` (carte de paiement).
* **Variable** (obligatoire) : le résultat est stocké sous ce nom et inclus dans le webhook `call.completed`.
* **Prompt** : instructions supplémentaires facultatives, en complément du dialogue intégré.
* **Tentatives max.** (3 par défaut) : après l'échec final, le flux emprunte la connexion étiquetée `failed`, si elle existe.
* **Chiffres DTMF** : pour le type `dtmf`, le nombre de chiffres à saisir.
* **Carte de paiement** (`credit_card`) : nécessite que l'outil intégré **Collecter une carte de paiement** soit attribué à l'assistant (fonctionnalité soumise au plan), avec un compte Stripe connecté sélectionné. Pendant l'appel, l'agent recueille les informations de la carte en toute sécurité ; la plateforme crée une méthode de paiement Stripe sur ce compte. Seuls `card_last4`, `card_brand` et `stripe_payment_method_id` sont stockés — jamais le PAN ni le CVV. Connectez d'abord Stripe sous Outils → App Store. Utilisez ensuite l'ID de la méthode de paiement pour facturer via Stripe.

## DTMF

Invite l'appelant à saisir un nombre fixe de **chiffres sur le clavier du téléphone** (délai d'expiration de 30 s). Utilisez `collect` avec le type `dtmf` lorsque vous avez besoin de validation et de relances ; utilisez ce nœud plus simple pour des choix de menu rapides.

## Fin

Termine l'appel, en prononçant éventuellement un **message d'adieu** au préalable. Donnez toujours une fin explicite à vos flux : cela garantit des statuts d'appel propres et empêche la conversation de dériver une fois sa mission accomplie.

## Outil en ligne ou attribué

Les nœuds **Outil**, **Transfert**, **Transfert à chaud**, **DTMF** et **Collecte (type `dtmf`)** proposent chacun un commutateur **Source de l'outil** en haut de leur panneau de configuration :

* **En ligne** (par défaut) — vous configurez directement les champs du nœud, exactement comme décrit ci-dessus. C'est le comportement d'origine ; rien ne change pour les flux existants.
* **Outil attribué** — au lieu des champs en ligne, le nœud réutilise un **outil réutilisable** déjà attribué à cet assistant (créé sur la [page Outils](/assistants/built-in-tools) et attribué sous **Paramètres → Outils**). Les champs en ligne sont conservés mais ignorés tant que ce mode est actif.

Le sélecteur est **filtré par type** : vous ne pouvez choisir qu'un outil correspondant au nœud.

| Nœud                   | Type d'outil attribué                                                                                          |
| ---------------------- | -------------------------------------------------------------------------------------------------------------- |
| Outil                  | tout outil attribué — **API**, **MCP** ou **intégré** (un MCP expose ici l'ensemble des outils de son serveur) |
| Transfert              | **Transfert d'appel** intégré (`call_transfer`)                                                                |
| Transfert à chaud      | **Transfert à chaud** intégré (`warm_call_transfer`)                                                           |
| DTMF                   | **Saisie DTMF** intégrée (`dtmf_input`)                                                                        |
| Collecte (type `dtmf`) | **Collecte clavier** intégrée (`collect_keypad`)                                                               |

<Note>
  La source **Outil attribué** n'apparaît que pour les nœuds Collecte de type `dtmf` — les autres types (`name`, `email`, `phone`, `address`, `date of birth`) n'ont pas d'équivalent intégré et restent en ligne uniquement. Changer un nœud Collecte pour un type autre que `dtmf` efface automatiquement tout outil attribué.
</Note>

Si un outil attribué est ensuite désassigné, supprimé, désactivé, ou a le mauvais sous-type, le nœud **retombe sur sa configuration en ligne** au moment de l'appel (et enregistre un événement d'appel `flow_tool_ref_unresolved`) — un appel ne plante jamais à cause d'une référence d'outil manquante.

<Tip>
  Optez pour **Outil attribué** lorsque le même numéro de transfert, la même invite clavier ou le même endpoint API est utilisé dans plusieurs flux ou assistants : modifiez-le une seule fois sur la page Outils, et chaque nœud qui le référence se met à jour. Optez pour **En ligne** pour un comportement ponctuel, propre à un flux.
</Tip>
