Skip to main content
Funktionsverktyg gör att dina AI-agenter kan anropa externa API:er under telefonsamtal. Använd dem för att slå upp kunddata, kontrollera tillgänglighet, boka tider eller utföra valfri åtgärd som din backend stöder.

Så fungerar det

  1. Du definierar verktyg med ett schema (vilka argument verktyget accepterar)
  2. Du anger en endpoint-konfiguration (var ThunderPhone anropar ditt API) — eller utelämnar den för att ta emot verktygsanrop på organisationens webhook
  3. Under ett samtal avgör AI:n när ett verktyg ska användas baserat på konversationen
  4. ThunderPhone anropar din endpoint med verktygsargumenten
  5. Ditt API-svar skickas tillbaka till AI:n för att fortsätta konversationen
Funktionsverktyg är alternativet där du använder ditt eget API. ThunderPhone innehåller även plattformshanterade verktyg som inte kräver någon endpoint: appanslutningar (HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, Cal.com), API-anslutningar och MCP-servrar.

Verktygsschema

Varje verktyg följer den här strukturen:

Funktionsdefinition

Endpoint-konfiguration

endpoint-konfigurationen skickas inte till AI-modellen — den används endast av ThunderPhone för att utföra verktygsanropet.

Två anropsvägar

Vilken begäran din server tar emot beror på om verktyget har en endpoint: Båda vägarna är blockerande — AI:n väntar mitt i en mening på resultatet — med en timeout på 20 s. Håll hanterare snabba. Det går bra att kombinera: i ett samtal vars organisation har en webhook-URL anropas verktyg med en endpoint direkt, medan övriga använder webhooken som reserv.

Direkta endpointanrop

När AI:n anropar ett verktyg som har en endpoint skickar ThunderPhone en begäran till din URL:

Begärandehuvuden

Anpassade huvuden från din endpoint.headers inkluderas alltid ordagrant, plus två ThunderPhone-namnområdesindelade huvuden:
  • X-ThunderPhone-Signature — HMAC-SHA256 av de exakta bytevärdena i begärandetexten, med din organisations webhook-hemlighet som nyckel
  • X-ThunderPhone-Call-ID — ID:t för det aktuella samtalet
Content-Type: application/json anges om inte din endpoint.headers åsidosätter det — en anpassad Content-Type gäller.
Signaturen använder webhook-hemligheten på organisationsnivå från GET /v1/webhook som nyckel. Om din organisation aldrig har konfigurerat den äldre webhooken finns ingen hemlighet och verktygsanrop innehåller endast X-ThunderPhone-Call-ID — en hanterare som avbryter vid en saknad signatur skulle avvisa dem. Konfigurera antingen den äldre webhooken för att få en hemlighet, eller lägg din egen delade hemlighet i endpoint.headers.

Begärandetext

För POST / PUT / PATCH innehåller texten endast verktygsargumenten (utan omslag), serialiserade kanoniskt (sorterade nycklar, kompakta avgränsare):
För GET / DELETE skickas argumenten som frågeparametrar och texten är tom — signaturen beräknas då över den tomma bytesträngen. Se Verifiera webhook-signaturer.

Svar

Returnera ett JSON-svar med verktygsresultatet:
Svaret formateras och skickas till AI:n för att fortsätta konversationen. Icke-JSON-svar omsluts som {"data": "<text>"}; tidsgränser och anslutningsfel rapporteras till AI:n som fel, så att röstagenten kan be om ursäkt och gå vidare i stället för att fastna.

Utskick i webhook-läge

Verktyg utan en endpoint skickas till organisationens äldre webhook-URL som en signerad telephony.tool-begäran (telefonsamtal) eller web.tool-begäran (webbsamtal). Till skillnad från granskningsnotiserna som levereras till webhook-endpoints efter körning är denna begäran själva körningen — ditt HTTP-svar är verktygsresultatet.
web.tool innehåller origin_domain i stället för from_number / to_number. Svara med verktygsresultatet som JSON — samma svarskontrakt som för direkta endpointanrop. Begäran signeras med organisationens webhook-hemlighet över den råa texten, precis som alla andra webhooks.
Prenumererande webhook-endpoints får dessutom en icke-blockerande telephony.tool / web.tool-notis efter varje verktygskörning (oavsett vilken väg som körde den), inklusive verktygets svar — användbart för granskningsloggar. Se händelsekatalogen.

Signaturverifiering

Direkta verktygsanrop signeras på samma sätt som webhooks:
  • HMAC-SHA256 över de exakta byte i begärandetexten (den kanoniska JSON-strukturen — sorterade nycklar, inga extra blanksteg)
  • Nycklad med organisationens webhook-hemlighet
  • GET- / DELETE-verktyg signerar den tomma bytesträngen
Fullständiga exempel — inklusive fallet med tom begärandetext och informationen om när ingen hemlighet används — finns i Verifiera webhook-signaturer.

Exempel: Komplett bokningsflöde

Här är en uppsättning verktyg för ett komplett system för tidsbokning:

Bästa praxis

Fältet description hjälper AI:n att förstå när verktyget ska användas. Var specifik med vad det gör och när det är lämpligt.
Returnera felmeddelanden som AI:n kan förstå: {"error": "No slots available for that date"} i stället för generella 500-fel.
Returnera endast det AI:n behöver för att fortsätta samtalet. Stora nyttolaster förlänger svarstiderna.
Markera fält som required endast när det verkligen behövs. AI:n ber användaren om obligatorisk information innan verktyget anropas.

Relaterat

Appanslutningar

Plattformshanterade verktyg för HubSpot, Salesforce, Slack, Google Calendar, Google Sheets och Cal.com — ingen endpoint krävs.

MCP-servrar

Anslut en MCP-server och låt agenten anropa dess verktyg.

API-anslutningar

Återanvändbara REST-integrationer som du kan ansluta till agenter.

Verifiera webhook-signaturer

En verifieringshjälpare för webhooks och verktygsanrop.