Skip to main content
Funktionstools ermöglichen Ihren Sprachagenten, während Telefonaten externe APIs aufzurufen. Verwenden Sie sie, um Kundendaten abzurufen, Verfügbarkeiten zu prüfen, Termine zu buchen oder jede Aktion auszuführen, die Ihr Backend unterstützt.

So funktioniert es

  1. Sie definieren Tools mit einem Schema (welche Argumente das Tool akzeptiert)
  2. Sie geben eine endpoint-Konfiguration an (wo ThunderPhone Ihre API aufruft) — oder lassen sie weg, um Tool-Aufrufe über den Webhook Ihrer Organisation zu erhalten
  3. Während eines Anrufs entscheidet die KI anhand des Gesprächs, wann ein Tool verwendet werden soll
  4. ThunderPhone ruft Ihren Endpunkt mit den Tool-Argumenten auf
  5. Die API-Antwort wird an die KI zurückgegeben, um das Gespräch fortzusetzen
Funktionstools sind der Weg, Ihre eigene API einzubringen. ThunderPhone bietet außerdem plattformverwaltete Tools, die keinen Endpunkt benötigen: App-Verbindungen (HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, Cal.com), API-Verbindungen und MCP-Server.

Tool-Schema

Jedes Tool folgt dieser Struktur:

Funktionsdefinition

Endpunktkonfiguration

Die endpoint-Konfiguration wird nicht an das KI-Modell gesendet — sie wird nur von ThunderPhone verwendet, um den Tool-Aufruf auszuführen.

Zwei Aufrufpfade

Welche Anfrage Ihr Server erhält, hängt davon ab, ob das Tool einen endpoint hat: Beide Pfade sind blockierend — die KI wartet mitten im Satz auf das Ergebnis — mit einem Timeout von 20 s. Halten Sie Handler schnell. Eine Mischung ist möglich: Bei einem Anruf, dessen Organisation eine Webhook-URL hat, werden Tools mit einem endpoint direkt aufgerufen, während die übrigen auf den Webhook zurückfallen.

Direkte Endpoint-Aufrufe

Wenn die KI ein Tool aufruft, das einen endpoint hat, sendet ThunderPhone eine Anfrage an Ihre URL:

Anfrage-Header

Benutzerdefinierte Header aus Ihrem endpoint.headers werden immer unverändert eingeschlossen, zusätzlich zu zwei Headern im ThunderPhone-Namespace:
  • X-ThunderPhone-Signature — HMAC-SHA256 der exakten Anfrage-Body- Bytes, mit Ihrem Webhook-Secret der Organisation als Schlüssel
  • X-ThunderPhone-Call-ID — Die ID des aktuellen Anrufs
Content-Type: application/json wird gesetzt, sofern Ihre endpoint.headers es nicht überschreiben — ein benutzerdefinierter Content-Type hat Vorrang.
Die Signatur wird mit dem Webhook-Secret auf Organisationsebene aus GET /v1/webhook erstellt. Wenn Ihre Organisation den Legacy-Webhook noch nie konfiguriert hat, gibt es kein Secret und Tool-Aufrufe enthalten nur X-ThunderPhone-Call-ID — ein Handler, der bei einer fehlenden Signatur sofort fehlschlägt, würde sie ablehnen. Konfigurieren Sie entweder den Legacy-Webhook, um ein Secret zu erhalten, oder hinterlegen Sie Ihr eigenes gemeinsames Secret in endpoint.headers.

Anfrage-Body

Bei POST / PUT / PATCH enthält der Body nur die Tool- Argumente (ohne Wrapper), kanonisch serialisiert (sortierte Schlüssel, kompakte Trennzeichen):
Bei GET / DELETE werden die Argumente als Abfrageparameter gesendet und der Body ist leer — die Signatur wird dann über die leere Byte-Zeichenfolge berechnet. Siehe Webhook-Signaturen überprüfen.

Antwort

Geben Sie eine JSON-Antwort mit dem Tool-Ergebnis zurück:
Die Antwort wird formatiert und der KI bereitgestellt, damit sie das Gespräch fortsetzen kann. Nicht-JSON-Antworten werden als {"data": "<text>"} verpackt; Zeitüberschreitungen und Verbindungsfehler werden der KI als Fehler gemeldet, damit der Agent sich entschuldigen und fortfahren kann, statt zu blockieren.

Versand im Webhook-Modus

Tools ohne einen endpoint werden an die Legacy-Webhook-URL Ihrer Organisation als signierte Anfrage telephony.tool (Telefonanrufe) oder web.tool (Web-Aufrufe) gesendet. Anders als die Audit-Benachrichtigungen, die nach der Ausführung an Webhook-Endpoints zugestellt werden, ist diese Anfrage die Ausführung — Ihre HTTP-Antwort ist das Tool-Ergebnis.
web.tool enthält origin_domain anstelle von from_number / to_number. Antworten Sie mit dem Tool-Ergebnis als JSON — derselbe Antwortvertrag wie bei direkten Endpoint-Aufrufen. Die Anfrage wird wie jeder andere Webhook mit dem Webhook-Secret der Organisation über den unverarbeiteten Body signiert.
Abonnierte Webhook-Endpoints erhalten zusätzlich nach jeder Tool-Ausführung eine nicht blockierende Benachrichtigung telephony.tool / web.tool nach der Ausführung (unabhängig davon, über welchen Pfad sie ausgeführt wurde), einschließlich der Antwort des Tools — nützlich für Audit-Trails. Siehe den Ereigniskatalog.

Signaturüberprüfung

Direkte Tool-Aufrufe werden genauso signiert wie Webhooks:
  • HMAC-SHA256 über die exakten Bytes des Anfragebodys (das kanonische JSON — sortierte Schlüssel, keine zusätzlichen Leerzeichen)
  • Mit Ihrem Organisations-Webhook-Secret als Schlüssel
  • GET- / DELETE-Tools signieren die leere Byte-Zeichenfolge
Vollständige Beispiele — einschließlich des Falls mit leerem Body und des Hinweises bei fehlendem Secret — finden Sie unter Webhook-Signaturen überprüfen.

Beispiel: Vollständiger Buchungsablauf

Hier ist eine Reihe von Tools für ein vollständiges Terminbuchungssystem:

Best Practices

Das Feld description hilft der KI zu verstehen, wann das Tool verwendet werden soll. Beschreiben Sie konkret, was es tut und wann es geeignet ist.
Geben Sie Fehlermeldungen zurück, die die KI verstehen kann: {"error": "No slots available for that date"} statt allgemeiner 500-Fehler.
Geben Sie nur zurück, was die KI benötigt, um das Gespräch fortzusetzen. Große Nutzlasten verlangsamen die Antwortzeiten.
Markieren Sie Felder nur dann als required, wenn es wirklich notwendig ist. Die KI fragt den Nutzer nach erforderlichen Informationen, bevor sie das Tool aufruft.

Verwandte Themen

App-Verbindungen

Von der Plattform verwaltete Tools für HubSpot, Salesforce, Slack, Google Calendar, Google Sheets und Cal.com — kein Endpoint erforderlich.

MCP-Server

Binden Sie einen MCP-Server an und lassen Sie den Agenten dessen Tools aufrufen.

API-Verbindungen

Wiederverwendbare REST-Integrationen, die Sie an Agenten anbinden können.

Webhook-Signaturen verifizieren

Ein Verifizierungshelfer für Webhooks und Tool-Aufrufe.