---
title: "Outils intégrés"
description: "Indiquez aux agents ThunderPhone de mettre fin aux appels, de transférer les appelants, de naviguer dans les menus à touches, d’attendre en attente, de rechercher des informations, de lire des sons, d’envoyer des e-mails et de calculer des totaux."
---

Les outils intégrés permettent à un agent d’effectuer des actions d’appel courantes sans connecter votre
propre API. La plupart sont disponibles automatiquement ; l’e-mail, les sons, la calculatrice et la
recherche dans les connaissances n’apparaissent qu’après la configuration du paramètre ou de la source associés. Indiquez à l’agent
quand utiliser chaque action dans son prompt.

| Outil | À utiliser pour | Comment l’activer | Appels pris en charge |
| --- | --- | --- | --- |
| `end_call` | Terminer une conversation achevée | Toujours disponible | Téléphone, Talk dans le navigateur, widget, simulation et Realtime |
| `transfer_call` | Router un appelant téléphonique | Configurer le routage dans le prompt | Appels téléphoniques classiques ; Realtime en ligne avec `call_events` peut utiliser le transfert à froid. Realtime avec agent enregistré ne l’inclut pas. |
| `send_keypad_input` | Appuyer sur des touches dans un menu téléphonique | Toujours disponible lors des appels téléphoniques classiques | Appels téléphoniques ; Realtime sortant en ligne avec `call_events`. Realtime avec agent enregistré ne l’inclut pas. |
| `no_response` | Continuer à écouter pendant qu’un menu automatisé parle ou qu’un appelant réfléchit à voix haute ; un appelant qui demande à l’agent d’attendre reçoit simplement « Bien sûr. » | Toujours disponible | Tous les types d’appels |
| `wait_on_hold` | Attendre silencieusement le retour d’une personne | Inclus dans les appels sortants | Sessions téléphoniques sortantes et Realtime sortantes en ligne |
| `search_knowledge_base` | Répondre à partir de sources associées | Associer des connaissances à l’agent | Appels avec agent enregistré et connaissances associées |
| `play_sound` | Lire un son de notification configuré | **Avancé → Son de l’outil** | Appels avec agent enregistré |
| `send_email` | Envoyer un e-mail à un destinataire fixe | **Avancé → Envoyer un e-mail** | Appels avec agent enregistré |
| `calculate` | Calculer exactement les totaux, les frais et la monnaie | **Avancé → Calculatrice** | Appels avec agent enregistré |

## `end_call`

Termine l'appel en cours lorsque le prompt indique au modèle de le faire. Cet outil est disponible par défaut et ne comporte aucun paramètre d'agent.

Indiquez dans le prompt la condition et toute formule d'au revoir requise :

```text
When the caller confirms they need nothing else, say goodbye and end the call.
```

Un appel terminé par le modèle a `end_reason: "ai_hangup"`, y compris s’il se termine après l’avertissement de limite de durée d’appel. L’appel se termine avec `max_duration` uniquement si la limite de durée est atteinte en premier, et avec `balance_exhausted` lorsque le solde prépayé est épuisé.

## `transfer_call`

Transfère un appelant téléphonique vers un numéro fixe fourni par le modèle. Le transfert à froid est immédiat. Un transfert à chaud filtré appelle en privé la destination avant de connecter les interlocuteurs. Le transfert à chaud nécessite un numéro VoIP importé et vérifié pouvant passer des appels sortants.

Placez le numéro de destination et la condition exacte de routage dans le prompt :

```text
If the caller asks for billing, transfer them to +15551234567.
```

Un transfert à froid réussi utilise `end_reason: "ai_transfer"` ; un transfert
à chaud terminé utilise `end_reason: "ai_warm_transfer"`. Une tentative de transfert à chaud échouée rend le contrôle à l'agent ; la fin ultérieure de l'appel détermine donc sa raison de fin. Dans les sessions non téléphoniques, une demande de transfert termine la session à la place.

Consultez [Transférer des appels](/fr/guides/call-transfers) pour la configuration du tableau de bord et de l'API, le routage, le filtrage, la gestion des échecs, les limites et les tests.

## `send_keypad_input`

Envoie les chiffres DTMF (clavier téléphonique) `0`–`9`, `*` et `#` à une ligne téléphonique. Le modèle l'utilise pour naviguer dans un IVR, le menu automatisé qui demande aux appelants d'appuyer sur des touches. Cet outil est disponible par défaut et ne comporte aucun paramètre d'agent.

Indiquez au modèle quels menus il peut parcourir et d'où proviennent les valeurs demandées. Ne lui demandez pas de deviner les options de menu :

```text
Follow the phone menu for account status. Press a key only after the menu
states what that key does. Enter the account number supplied by the caller.
```

La plateforme supprime les caractères non pris en charge et envoie les chiffres valides dans l'ordre. S'il ne reste aucun chiffre valide ou si l'appel ne peut pas envoyer de saisie au clavier, l'échec est renvoyé à l'agent afin qu'il puisse se rétablir.

## `no_response`

Maintient l’agent silencieux lorsqu’un système automatisé parle encore ou lui demande de continuer à écouter, ainsi que lorsqu’un appelant réfléchit à voix haute (« euh, voyons ») ou se tourne pour parler à quelqu’un d’autre. Lorsqu’un appelant demande à l’agent d’attendre pendant qu’il fait quelque chose (« une seconde », « laissez-moi vérifier », « pouvez-vous patienter une seconde ? ») et ne lui donne rien d’autre à quoi répondre, l’agent dit simplement « Bien sûr. » (et non « Prenez votre temps »), puis attend que l’appelant parle à nouveau. Les relances de silence de l’agent continuent de fonctionner et sont toujours prononcées si la ligne reste silencieuse. Cette fonctionnalité ne s’applique pas à l’accueil d’une personne en direct, à une question ou à une véritable file d’attente. Elle est disponible par défaut et ne nécessite aucun réglage de l’agent.

Si votre prompt indique à l’agent quoi dire lorsqu’un appelant demande un moment, le prompt prévaut.

En général, la description intégrée suffit. Pour les appels comportant beaucoup d'IVR, renforcez cette limite dans le prompt :

```text
Stay silent while a phone menu is still speaking. Answer a live person as soon
as they address you.
```

Cette action ne termine pas l'appel.

## `wait_on_hold`

Place un agent sortant dans un état de mise en attente silencieuse jusqu'à ce qu'un interlocuteur humain revienne.
Le modèle l'utilise uniquement après que l'autre partie a explicitement indiqué que l'agent était
mis en attente. Cet outil est automatiquement disponible pour les appels sortants et ne possède aucun
paramètre dans le tableau de bord.

```text
If a person explicitly puts you on hold, wait silently. When they return,
continue from the question you were discussing.
```

N'incitez pas l'agent à l'utiliser pour le message « veuillez patienter » d'un IVR. La mise en attente dure
jusqu'à 15 minutes par défaut. Pour les appels sortants ordinaires, `POST /v1/call`
accepte un entier positif `max_hold_seconds` ; Realtime inline limite
`max_hold_seconds` à 10–900 secondes. Si l'interlocuteur
revient, l'agent reprend sans modifier la raison de fin de l'appel. Si la limite
expire, la plateforme met fin à l'appel avec `end_reason: "ai_hangup"`.

## `search_knowledge_base`

Recherche dans les documents associés à l'agent et renvoie les passages pertinents. Associez
une base de connaissances ou des documents de connaissances individuels pour l'activer, puis indiquez
au modèle quelles réponses doivent provenir de ces sources :

```text
Search the knowledge base before answering policy questions. If the first
search is inconclusive, try once more with different key terms.
```

En cas d'échec d'une recherche, le résultat est renvoyé à l'agent. Consultez [Base de
connaissances](/fr/guides/knowledge-base) pour la configuration du tableau de bord et de l'API.

## `play_sound`

Lit le son de notification configuré pour l'agent après toute parole lors du même
tour. Dans le tableau de bord, définissez **Avancé → Son de l'outil** sur **Carillon**, **Ding**,
ou **Bip**, puis déployez l'agent. **Aucun** supprime l'outil.

Avec l'[API Agents](/api-reference/agents), configurez `play_sound_asset` sur
`"chime"`, `"ding"` ou `"beep"`, puis déployez. Définissez-le sur `""` pour désactiver
l'outil.

```text
After confirming that an appointment was saved, say "You're all set" and play
the notification sound.
```

Un échec de lecture est renvoyé à l'agent et ne met pas fin à l'appel.

## `send_email`

Envoie un e-mail en texte brut à l'unique destinataire configuré par le propriétaire de l'agent.
Le modèle fournit l'objet et le corps. Il ne voit jamais de paramètre de destinataire
et ne peut ni choisir ni modifier l'adresse.

Dans le tableau de bord, activez **Avancé → Envoyer un e-mail**, enregistrez une adresse de destinataire,
puis déployez l'agent. Avec l'[API Agents](/api-reference/agents), configurez à la fois
`send_email_enabled: true` et un `send_email_recipient` non vide, puis déployez.
Définissez le déclencheur et le contenu requis dans le prompt :

```text
When the caller asks to leave a message, collect their name, callback number,
and message. Read the details back for confirmation, then email them.
```

Un appel peut tenter au maximum trois envois d'e-mails. Chaque objet est limité à 300
caractères et chaque corps à 20 000 caractères. Une configuration manquante, un contenu
invalide, la limite par appel et les échecs de livraison sont renvoyés à l'agent.
Un échec de livraison utilise tout de même une des trois tentatives.

Testez avec un destinataire contrôlé avant un déploiement à grande échelle. Talk dans le navigateur et
les simulations envoient de vrais e-mails ; il n'existe pas de mode d'exécution à blanc.

## `calculate`

Évalue exactement une expression arithmétique et renvoie le résultat, afin que l’agent ne calcule pas les prix de tête. Cet outil est désactivé par défaut. Dans le tableau de bord, activez **Avancé → Calculatrice**, puis déployez l’agent. Avec l’[API Agents](/api-reference/agents), définissez `calculator_enabled: true`, puis déployez.

Le modèle écrit l’expression, par exemple `2*23.5 + 16.5 + 4`, et lit le résultat à l’appelant. Les expressions peuvent utiliser des nombres, `+`, `-`, `*`, `/` et des parenthèses. Un appel peut contenir jusqu’à 10 expressions séparées par `;`, par exemple un sous-total et le total avec des frais de livraison, dans une limite totale de 500 caractères. Les résultats sont arrondis à 10 décimales. Le calcul utilise une arithmétique décimale exacte, donc `0.1 + 0.2` renvoie `0.3`. Une division par zéro ou tout autre problème dans l’expression est renvoyé à l’agent sous forme d’erreur à corriger. L’outil s’exécute sur ThunderPhone et répond instantanément, sans phrase de remplissage ni bruit de frappe.

Activez-le pour les agents qui annoncent des totaux de commande, des frais ou de la monnaie. Aucune modification du prompt n’est nécessaire.

## Note de compatibilité

Le paramètre **Avancé → Mentions légales non interruptibles** et le champ historique
`speak_uninterruptible_enabled` sont conservés pour compatibilité, mais leur activation
n'a aucun effet. Laissez ce paramètre désactivé ; aucun prompt ne peut activer cet outil.

Pour une mention obligatoire au début de l'appel, utilisez **Annonce de consentement**. Elle est lue
mot pour mot avant une conversation ordinaire et ne peut pas être interrompue. Consultez [Lois sur le consentement à l'enregistrement des appels](/fr/guides/recording-consent-laws).

## Tester et surveiller les outils intégrés

Utilisez Talk dans le navigateur ou une simulation pour vérifier les prompts, la recherche dans la base de connaissances, les sons
et les e-mails. Ces environnements ne peuvent pas reproduire le comportement du réseau téléphonique. Testez
la navigation au clavier et la mise en attente lors d'un appel téléphonique sortant, et testez un transfert
assisté complet lors d'un appel réel à l'aide d'un numéro VoIP importé éligible. La prise en charge de Realtime
est limitée comme indiqué dans le tableau ci-dessus.

## Appels, tarification et webhooks

Les actions intégrées n'entraînent aucun frais d'utilisation par outil. Les frais habituels d'appel et de fournisseur
s'appliquent toujours ; consultez la [Tarification](/fr/guides/pricing). Leurs appels et leurs résultats peuvent apparaître
dans la transcription finalisée, mais ils n'émettent pas `telephony.tool` ni `web.tool`.
Ces événements sont réservés aux [fonctions définies par l'utilisateur](/fr/tools/overview). Seule une
fin d'appel ou un transfert finalisé modifie le `end_reason` de l'appel ; les autres échecs sont renvoyés
à l'agent. Consultez les [webhooks de finalisation](/fr/webhooks/call-complete) pour l'enregistrement de l'appel.
