Skip to main content
Les outils de fonction permettent à vos agents IA d’invoquer des API externes pendant les appels téléphoniques. Utilisez-les pour rechercher des données client, vérifier les disponibilités, prendre des rendez-vous ou effectuer toute action prise en charge par votre backend.

Fonctionnement

  1. Définissez des outils avec un schéma (les arguments acceptés par l’outil)
  2. Fournissez une configuration endpoint (l’emplacement où ThunderPhone appelle votre API) — ou omettez-la pour recevoir les appels d’outils sur le webhook de votre organisation
  3. Pendant un appel, l’IA décide quand utiliser un outil selon la conversation
  4. ThunderPhone appelle votre endpoint avec les arguments de l’outil
  5. La réponse de votre API est renvoyée à l’IA pour poursuivre la conversation
Les outils de fonction constituent l’approche où vous fournissez votre propre API. ThunderPhone propose également des outils gérés par la plateforme qui ne nécessitent aucun endpoint : connexions d’applications (HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, Cal.com), connexions API et serveurs MCP.

Schéma d’outil

Chaque outil suit cette structure :

Définition de fonction

Configuration de l’endpoint

La configuration endpoint n’est pas envoyée au modèle d’IA — elle est uniquement utilisée par ThunderPhone pour exécuter l’appel d’outil.

Deux chemins d’invocation

La requête reçue par votre serveur dépend de la présence ou non d’un endpoint pour l’outil : Les deux chemins sont bloquants — l’IA attend le résultat en plein milieu d’une phrase — avec un délai d’expiration de 20 s. Gardez les gestionnaires rapides. Vous pouvez les combiner : lors d’un appel dont l’organisation possède une URL de webhook, les outils avec un endpoint sont appelés directement et les autres utilisent le webhook comme solution de repli.

Appels directs de point de terminaison

Lorsque l’IA invoque un outil doté d’un endpoint, ThunderPhone envoie une requête à votre URL :

En-têtes de requête

Les en-têtes personnalisés de votre endpoint.headers sont toujours inclus verbatim, ainsi que deux en-têtes dans l’espace de noms ThunderPhone :
  • X-ThunderPhone-Signature — HMAC-SHA256 des octets exacts du corps de la requête, utilisant comme clé votre secret de webhook d’organisation
  • X-ThunderPhone-Call-ID — L’ID de l’appel en cours
Content-Type: application/json est défini sauf si votre endpoint.headers le remplace — un Content-Type personnalisé prévaut.
La signature utilise comme clé le secret de webhook au niveau de l’organisation provenant de GET /v1/webhook. Si votre organisation n’a jamais configuré le webhook hérité, il n’existe aucun secret et les appels d’outils ne contiennent que X-ThunderPhone-Call-ID — un gestionnaire qui échoue systématiquement en l’absence de signature les rejetterait. Configurez le webhook hérité pour obtenir un secret, ou placez votre propre secret partagé dans endpoint.headers.

Corps de la requête

Pour POST / PUT / PATCH, le corps contient uniquement les arguments de l’outil (sans enveloppe), sérialisés de manière canonique (clés triées, séparateurs compacts) :
Pour GET / DELETE, les arguments sont envoyés sous forme de paramètres de requête et le corps est vide — la signature est alors calculée sur la chaîne d’octets vide. Consultez Verifier les signatures de webhook.

Réponse

Renvoyez une réponse JSON contenant le résultat de l’outil :
La réponse est formatée et fournie à l’IA afin de poursuivre la conversation. Les réponses non JSON sont encapsulées sous la forme {"data": "<text>"} ; les délais d’expiration et les échecs de connexion sont signalés à l’IA comme des erreurs, afin que l’agent puisse s’excuser et poursuivre plutôt que de rester bloqué.

Distribution en mode webhook

Les outils sans endpoint sont distribués à l’URL de webhook héritée de votre organisation sous la forme d’une requête signée telephony.tool (appels téléphoniques) ou web.tool (appels web). Contrairement aux notifications d’audit livrées aux points de terminaison webhook après l’exécution, cette requête est l’exécution — votre réponse HTTP constitue le résultat de l’outil.
web.tool contient origin_domain au lieu de from_number / to_number. Répondez avec le résultat de l’outil au format JSON — le même contrat de réponse que pour les appels directs de point de terminaison. La requête est signée avec le secret de webhook de l’organisation sur le corps brut, comme tout autre webhook.
Les points de terminaison webhook abonnés reçoivent également une notification non bloquante telephony.tool / web.tool après l’exécution de chaque outil (quel que soit le chemin utilisé), incluant la réponse de l’outil — utile pour les pistes d’audit. Consultez le catalogue des événements.

Vérification de signature

Les appels directs d’outils sont signés de la même manière que les webhooks :
  • HMAC-SHA256 sur les octets exacts du corps de la requête (le JSON canonique — clés triées, sans espaces superflus)
  • Avec le secret webhook de votre organisation comme clé
  • Les outils GET / DELETE signent la chaîne d’octets vide
Les recettes complètes — y compris le cas du corps vide et la mise en garde concernant l’absence de secret — sont disponibles dans Vérifier les signatures des webhooks.

Exemple : flux de réservation complet

Voici un ensemble d’outils pour un système complet de prise de rendez-vous :

Bonnes pratiques

Le champ description aide l’IA à comprendre quand utiliser l’outil. Indiquez précisément ce qu’il fait et à quel moment il est approprié de l’utiliser.
Renvoyez des messages d’erreur que l’IA peut comprendre : {"error": "No slots available for that date"} plutôt que des erreurs 500 génériques.
Renvoyez uniquement ce dont l’IA a besoin pour poursuivre la conversation. Les payloads volumineux ralentissent les temps de réponse.
Marquez les champs comme required uniquement lorsque cela est réellement nécessaire. L’IA demandera à l’utilisateur les informations requises avant d’appeler l’outil.

Associés

Connexions d’applications

Outils gérés par la plateforme pour HubSpot, Salesforce, Slack, Google Calendar, Google Sheets et Cal.com — aucun endpoint requis.

Serveurs MCP

Connectez un serveur MCP et laissez l’agent appeler ses outils.

Connexions API

Intégrations REST réutilisables que vous pouvez associer à des agents.

Vérifier les signatures de webhooks

Un assistant de vérification pour les webhooks et les appels d’outils.