Fonctionnement
- Définissez des outils avec un schéma (les arguments acceptés par l’outil)
- 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 - Pendant un appel, l’IA décide quand utiliser un outil selon la conversation
- ThunderPhone appelle votre endpoint avec les arguments de l’outil
- 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’unendpoint 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’unendpoint, ThunderPhone envoie
une requête à votre URL :
En-têtes de requête
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’organisationX-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.
Corps de la requête
PourPOST / 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) :
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 :{"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 sansendpoint 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/DELETEsignent la chaîne d’octets vide
Exemple : flux de réservation complet
Voici un ensemble d’outils pour un système complet de prise de rendez-vous :Bonnes pratiques
Rédigez des descriptions claires
Rédigez des descriptions claires
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.Gérez les erreurs avec élégance
Gérez les erreurs avec élégance
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.Gardez les réponses concises
Gardez les réponses concises
Renvoyez uniquement ce dont l’IA a besoin pour poursuivre la conversation. Les payloads volumineux ralentissent les temps de réponse.
Utilisez les champs obligatoires avec discernement
Utilisez les champs obligatoires avec discernement
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.