Instrumentpanelen täcker de flesta verktygsbehoven utan detta API: Anslutningar
→ Appar ansluter Slack, HubSpot, Salesforce, Google Calendar,
Google Sheets och Cal.com med några få OAuth-klick; Anslutningar →
API:er gör valfritt HTTP-API till en agentåtgärd (klistra in ett cURL-kommando
så skapar en AI-guide ett utkast till verktyget, med inbyggt Testa begäran); och
Anslutningar → MCP lägger till MCP-servrar. Se
Anslutningar. Den här guiden beskriver det underliggande
råa API:et bakom API-ytan.
Ett verktygs anatomi
Två delar:- Schemat — en funktionsdefinition i OpenAI-stil
(
{type: "function", function: {name, description, parameters}}) som talar om för LLM:en vad verktyget gör och vilka argument det tar. - Slutpunkten — URL:en som ThunderPhones servrar anropar när LLM:en beslutar att använda verktyget. Begäran är en JSON POST med LLM:ens valda argument som brödtext.
1. Välj en lagringsstrategi
Infogat på agenten
Lägg till ett engångsverktyg i agentens
tools-array. Enkelt, men
inte återanvändbart.Sparad integration
Lagra verktyget som en återanvändbar integration
och länka det från flera agenter. Rekommenderas för allt som används mer
än en gång.
2. Skapa integrationen
id-värdet (en UUID).
3. Testa slutpunkten i sandlådan
Innan du länkar integrationen till en agent, skicka en signerad begäran från ThunderPhones servrar för att bekräfta anslutningen:Response
400 code=url_not_allowed.
4. Koppla integrationen till en agent
Koppla den viaintegration_ids när du skapar eller uppdaterar en agent:
get_weather när uppringaren frågar
om väderförhållanden” — eller så kan den identifiera dem implicit utifrån
schemabeskrivningarna.
5. Implementera slutpunkten
När agenten anropar verktyget skickar ThunderPhone en signerad POST till dinendpoint_url:
6. Testa flödet
Starta en mikrofonsession mot agenten och ställ frågan som verktyget hanterar (”Hur är vädret i 94110?”). Samtalets transkription visar hela flödet tur och retur:GET /v1/calls/{call_id}/transcript;
den råa händelseströmmen (med tidsangivelser och ljudförskjutningar per post) finns på
GET /v1/calls/{call_id}/history.
Vanliga fallgropar
Agenten anropar aldrig verktyget
Agenten anropar aldrig verktyget
LLM fattar beslutet utifrån verktygets beskrivning. Om uppringarens
fråga inte matchar beskrivningen anropar modellen inte
verktyget. Förtydliga beskrivningen (lägg till vanliga synonymer och
formuleringar) eller nämn det uttryckligen i agentens prompt (”När
uppringaren frågar om väder, använd
get_weather.”).Verktyget returnerar för mycket data
Verktyget returnerar för mycket data
Svar över 6 kB trunkeras i transkriptionsförhandsvisningen. Returnera
endast de fält som LLM behöver — inte hela dataraden.
Tidsgränser
Tidsgränser
Verktygsslutpunkter har en standardtidsgräns på 10 sekunder. Om du behöver längre tid
hanterar du det asynkront: returnera
{"status": "pending", "request_id": "..."}
och visa resultatet via ett separat verktygsanrop.Versionshantering
Versionshantering
Varje
PATCH av en integration skapar en ny revision. Kontrollera
GET /v1/integrations/{id}/versions
för att se vem som ändrade vad. Om du förstör ett verktygs schema kan du
återställa manuellt genom att PATCH:a tillbaka en äldre ögonblicksbild.Nästa steg
Referens för integrationer
CRUD, överföring, versionshistorik.
Specifikation för funktionsverktyg
Fullständig JSON-schemagrammatik och kontraktet för signerade slutpunkter.
Verifiera signaturer
Tillämpa mönstret för webhook-signaturer på verktygsslutpunkter.
API för transkript + historik
Granska hela tur- och returflödet för ett verktygsanrop.