Skip to main content
Funksjonsverktøy lar AI-agentene dine kalle eksterne API-er under telefonsamtaler. Bruk dem til å slå opp kundedata, sjekke tilgjengelighet, bestille avtaler eller utføre enhver handling backend-en din støtter.

Slik fungerer det

  1. Du definerer verktøy med et skjema (hvilke argumenter verktøyet godtar)
  2. Du oppgir en endpoint-konfigurasjon (der ThunderPhone kaller API-et ditt) — eller utelater den for å motta verktøykall på organisasjonens webhook
  3. Under en samtale avgjør AI-en når den skal bruke et verktøy basert på samtalen
  4. ThunderPhone kaller endepunktet ditt med verktøyargumentene
  5. API-svaret ditt mates tilbake til AI-en for å fortsette samtalen
Funksjonsverktøy er alternativet der du bruker ditt eget API. ThunderPhone leverer også plattformadministrerte verktøy som ikke trenger noe endepunkt: appkoblinger (HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, Cal.com), API-koblinger og MCP-servere.

Verktøyskjema

Hvert verktøy følger denne strukturen:

Funksjonsdefinisjon

Endepunktkonfigurasjon

endpoint-konfigurasjonen sendes ikke til AI-modellen—den brukes bare av ThunderPhone til å utføre verktøykallet.

To kallingsveier

Hvilken forespørsel serveren din mottar, avhenger av om verktøyet har et endpoint: Begge veier er blokkerende — AI-en venter midt i en setning på resultatet — med en tidsavbruddsgrense på 20 s. Hold handlerne raske. En blanding fungerer fint: i en samtale der organisasjonen har en webhook-URL, blir verktøy med et endpoint kalt direkte, mens resten faller tilbake til webhooken.

Direkte endepunktkall

Når AI-en kaller et verktøy som har et endpoint, sender ThunderPhone en forespørsel til URL-en din:

Forespørselsheadere

Egendefinerte headere fra endpoint.headers inkluderes alltid ordrett, i tillegg til to ThunderPhone-navngitte headere:
  • X-ThunderPhone-Signature — HMAC-SHA256 av de nøyaktige bytene i forespørselsbrødteksten, med organisasjonens webhook-hemmelighet som nøkkel
  • X-ThunderPhone-Call-ID — ID-en til den gjeldende samtalen
Content-Type: application/json angis med mindre endpoint.headers overstyrer den — en egendefinert Content-Type har forrang.
Signaturen bruker webhook-hemmeligheten på organisasjonsnivå fra GET /v1/webhook som nøkkel. Hvis organisasjonen din aldri har konfigurert den eldre webhooken, finnes det ingen hemmelighet, og verktøykall inneholder kun X-ThunderPhone-Call-ID — en behandler som feiler ved manglende signatur, vil avvise dem. Konfigurer enten den eldre webhooken for å få en hemmelighet, eller legg din egen delte hemmelighet i endpoint.headers.

Forespørselsbrødtekst

For POST / PUT / PATCH inneholder brødteksten kun verktøyargumentene (ingen innpakning), serialisert kanonisk (sorterte nøkler, kompakte skilletegn):
For GET / DELETE sendes argumentene som spørringsparametere, og brødteksten er tom — signaturen beregnes da over den tomme bytestrengen. Se Verifiser webhook-signaturer.

Svar

Returner et JSON-svar med verktøyresultatet:
Svaret formateres og gis til AI-en slik at den kan fortsette samtalen. Ikke-JSON-svar pakkes inn som {"data": "<text>"}; tidsavbrudd og tilkoblingsfeil rapporteres til AI-en som feil, slik at stemmeagenten kan beklage og gå videre i stedet for å stoppe opp.

Utsending i webhook-modus

Verktøy uten et endpoint sendes til organisasjonens eldre webhook-URL som en signert telephony.tool-forespørsel (telefonsamtaler) eller web.tool-forespørsel (nettsamtaler). I motsetning til revisjonsvarslingene som leveres til webhook-endepunkter etter kjøring, er denne forespørselen selve kjøringen — HTTP-svaret ditt er verktøyresultatet.
web.tool inneholder origin_domain i stedet for from_number / to_number. Svar med verktøyresultatet som JSON — samme svarkontrakt som for direkte endepunktkall. Forespørselen signeres med organisasjonens webhook-hemmelighet over den rå brødteksten, som alle andre webhooks.
Abonnerte webhook-endepunkter mottar i tillegg et ikke-blokkerende telephony.tool- / web.tool-varsel etter at hvert verktøy kjøres (uansett hvilken bane som kjørte det), inkludert verktøyets svar — nyttig for revisjonsspor. Se hendelseskatalogen.

Signaturverifisering

Direkte verktøykall signeres på samme måte som webhooks:
  • HMAC-SHA256 over de nøyaktige byteverdiene i forespørselskroppen (den kanoniske JSON-en — sorterte nøkler, ingen ekstra mellomrom)
  • Med organisasjonens webhook-hemmelighet som nøkkel
  • GET- / DELETE-verktøy signerer den tomme byte-strengen
Fullstendige eksempler — inkludert tilfellet med tom forespørselskropp og forbeholdet om manglende hemmelighet — finner du i Verifiser webhook-signaturer.

Eksempel: Komplett bestillingsflyt

Her er et sett med verktøy for et komplett system for timebestilling:

Beste praksis

Feltet description hjelper AI-en med å forstå når verktøyet skal brukes. Vær spesifikk om hva det gjør, og når det er passende å bruke det.
Returner feilmeldinger som AI-en kan forstå: {"error": "No slots available for that date"} i stedet for generiske 500-feil.
Returner bare det AI-en trenger for å fortsette samtalen. Store nyttelaster gir tregere responstider.
Merk felt som required bare når det virkelig er nødvendig. AI-en vil be brukeren om obligatorisk informasjon før den kaller verktøyet.

Relatert

Appkoblinger

Plattformadministrerte verktøy for HubSpot, Salesforce, Slack, Google Kalender, Google Sheets og Cal.com — ingen endepunkt kreves.

MCP-servere

Koble til en MCP-server, og la agenten kalle verktøyene dens.

API-koblinger

Gjenbrukbare REST-integrasjoner som du kan koble til agenter.

Bekreft webhook-signaturer

Én bekreftelseshjelper for webhooks og verktøykall.