Skip to main content
Funktionsværktøjer giver dine AI-agenter mulighed for at kalde eksterne API’er under opkald. Brug dem til at slå kundedata op, kontrollere tilgængelighed, booke aftaler eller udføre enhver handling, din backend understøtter.

Sådan fungerer det

  1. Du definerer værktøjer med et skema (hvilke argumenter værktøjet accepterer)
  2. Du angiver en endpoint-konfiguration (hvor ThunderPhone kalder din API) — eller udelader den for at modtage værktøjskald på din organisations webhook
  3. Under et opkald beslutter AI’en, hvornår et værktøj skal bruges, baseret på samtalen
  4. ThunderPhone kalder dit endpoint med værktøjsargumenterne
  5. Dit API-svar sendes tilbage til AI’en for at fortsætte samtalen
Funktionsværktøjer er løsningen, hvor du bruger din egen API. ThunderPhone leverer også platformadministrerede værktøjer, der ikke kræver noget endpoint: appforbindelser (HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, Cal.com), API-forbindelser og MCP-servere.

Værktøjsskema

Hvert værktøj følger denne struktur:

Funktionsdefinition

Endpoint-konfiguration

endpoint-konfigurationen sendes ikke til AI-modellen — den bruges kun af ThunderPhone til at udføre værktøjskaldet.

To kaldestier

Hvilken anmodning din server modtager, afhænger af, om værktøjet har et endpoint: Begge stier er blokerende — AI’en venter midt i en sætning på resultatet — med en timeout på 20 s. Hold handlers hurtige. En blanding fungerer fint: Under et opkald, hvor organisationen har en webhook-URL, kaldes værktøjer med et endpoint direkte, og resten falder tilbage til webhooken.

Direkte endpointkald

Når AI’en kalder et værktøj, der har et endpoint, sender ThunderPhone en anmodning til din URL:

Anmodningsheadere

Brugerdefinerede headere fra dit endpoint.headers inkluderes altid ordret samt to ThunderPhone-navnerumsheadere:
  • X-ThunderPhone-Signature — HMAC-SHA256 af de nøjagtige bytes i anmodningsbrødteksten med din organisations webhookhemmelighed som nøgle
  • X-ThunderPhone-Call-ID — Det aktuelle opkalds-ID
Content-Type: application/json angives, medmindre dit endpoint.headers overskriver det — en brugerdefineret Content-Type har forrang.
Signaturen bruger webhookhemmeligheden på organisationsniveau fra GET /v1/webhook som nøgle. Hvis din organisation aldrig har konfigureret den ældre webhook, findes der ingen hemmelighed, og værktøjskald indeholder kun X-ThunderPhone-Call-ID — en handler, der fejler hårdt ved en manglende signatur, vil afvise dem. Konfigurer enten den ældre webhook for at få en hemmelighed, eller angiv din egen delte hemmelighed i endpoint.headers.

Anmodningsbrødtekst

For POST / PUT / PATCH indeholder brødteksten kun værktøjsargumenterne (ingen indpakning), serialiseret kanonisk (sorterede nøgler, kompakte separatorer):
For GET / DELETE sendes argumenterne som forespørgselsparametre og brødteksten er tom — signaturen beregnes derefter over den tomme bytestreng. Se Verificer webhooksignaturer.

Svar

Returner et JSON-svar med værktøjsresultatet:
Svaret formateres og gives til AI’en, så den kan fortsætte samtalen. Ikke-JSON-svar indpakkes som {"data": "<text>"}; timeouts og forbindelsesfejl rapporteres til AI’en som fejl, så agenten kan undskylde og fortsætte i stedet for at gå i stå.

Afsendelse i webhooktilstand

Værktøjer uden et endpoint sendes til din organisations ældre webhook-URL som en signeret telephony.tool-anmodning (telefonopkald) eller web.tool-anmodning (webopkald). I modsætning til auditnotifikationerne, der leveres til webhookendpoints efter udførelse, er denne anmodning udførelsen — dit HTTP-svar er værktøjsresultatet.
web.tool indeholder origin_domain i stedet for from_number / to_number. Svar med værktøjsresultatet som JSON — den samme svarkontrakt som ved direkte endpointkald. Anmodningen signeres med organisationens webhookhemmelighed over den rå brødtekst, ligesom alle andre webhooks.
Abonnerede webhookendpoints modtager desuden en ikke-blokerende telephony.tool / web.tool-notifikation efter hver værktøjsudførelse (uanset hvilken sti der udførte den), inklusive værktøjets svar — nyttigt til revisionsspor. Se hændelseskataloget.

Signaturverificering

Direkte værktøjskald signeres på samme måde som webhooks:
  • HMAC-SHA256 over de nøjagtige bytes i request-bodyen (den kanoniske JSON — sorterede nøgler, ingen ekstra mellemrum)
  • Med din organisations webhook-hemmelighed som nøgle
  • GET- / DELETE-værktøjer signerer den tomme bytestreng
Komplette opskrifter — inklusive tilfældet med tom body og forbeholdet om manglende hemmelighed — findes i Verificer webhook-signaturer.

Eksempel: Komplet bookingflow

Her er et sæt værktøjer til et komplet system til tidsbestilling:

Bedste praksis

Feltet description hjælper AI’en med at forstå, hvornår værktøjet skal bruges. Vær specifik om, hvad det gør, og hvornår det er relevant.
Returner fejlmeddelelser, som AI’en kan forstå: {"error": "No slots available for that date"} i stedet for generiske 500-fejl.
Returner kun det, AI’en har brug for for at fortsætte samtalen. Store payloads sænker svartiderne.
Markér kun felter som required, når det er strengt nødvendigt. AI’en beder brugeren om påkrævede oplysninger, før den kalder værktøjet.

Relateret

Appforbindelser

Platformadministrerede værktøjer til HubSpot, Salesforce, Slack, Google Kalender, Google Sheets og Cal.com — intet endpoint påkrævet.

MCP-servere

Tilknyt en MCP-server, og lad agenten kalde dens værktøjer.

API-forbindelser

Genanvendelige REST-integrationer, du kan tilknytte agenter.

Bekræft webhook-signaturer

Én bekræftelseshjælper til webhooks og værktøjskald.