Skip to main content
Työkalintegraatio on uudelleenkäytettävä HTTP-päätepiste, jonka agentti voi kutsua puhelun aikana. Annat ThunderPhonelle työkalun JSON-skeemakuvauksen sekä päätepisteen URL-osoitteen; agentti päättää keskustelun perusteella, milloin sitä kutsutaan, ja ThunderPhone tekee lähtevän HTTP-pyynnön palvelimiltaan sekä palauttaa vastauksen agentille.
Hallintapaneeli kattaa useimmat työkalutarpeet ilman tätä APIa: Yhteydet → Sovellukset yhdistää Slackin, HubSpotin, Salesforcen, Google Calendarin, Google Sheetsin ja Cal.comin muutamalla OAuth-klikkauksella; Yhteydet → APIt muuttaa minkä tahansa HTTP-APIn agentin toiminnoksi (liitä cURL-komento, niin AI-avustaja luonnostelee työkalun, jossa on sisäänrakennettu Testaa pyyntö -toiminto); ja Yhteydet → MCP lisää MCP-palvelimia. Katso Yhteydet. Tämä opas käsittelee API-näkymän taustalla olevaa raakaa APIa.
Tässä oppaassa rakennetaan sääntarkistustyökalu alusta loppuun.

Työkalun rakenne

Kaksi osaa:
  1. Skeema — OpenAI-tyylinen funktiomääritelmä ({type: "function", function: {name, description, parameters}}), joka kertoo LLM:lle, mitä työkalu tekee ja mitä argumentteja se ottaa.
  2. Päätepiste — URL-osoite, jota ThunderPhonen palvelimet kutsuvat, kun LLM päättää käyttää työkalua. Pyyntö on JSON-muotoinen POST-pyyntö, jonka runkona ovat LLM:n valitsemat argumentit.

1. Valitse tallennusstrategia

Agenttiin upotettu

Liitä kertakäyttöinen työkalu agentin tools-taulukkoon. Yksinkertaista, mutta ei uudelleenkäytettävää.

Tallennettu integraatio

Tallenna työkalu uudelleenkäytettävänä integraationa ja linkitä se useisiin agentteihin. Suositellaan kaikkeen, mitä käytetään useammin kuin kerran.
Tässä oppaassa käytetään tallennetun integraation polkua.

2. Luo integraatio

Tallenna palautettu id (UUID).
Panosta työkalun ja jokaisen parametrin description-kuvaukseen. LLM käyttää näitä merkkijonoja ajonaikaisesti päättääkseen, kutsuuko se työkalua ja miten. Epämääräiset kuvaukset → epämääräiset työkalukutsut.

3. Testaa päätepiste hiekkalaatikossa

Ennen kuin linkität integraation agenttiin, lähetä allekirjoitettu pyyntö ThunderPhonen palvelimilta varmistaaksesi yhteyden:
Response
Tämä testi myös vahvistaa ThunderPhonen SSRF-suojauksia — localhostiin tai yksityisiin IP-osoitealueisiin kohdistuvat pyynnöt palauttavat 400 code=url_not_allowed.

4. Liitä integraatio agenttiin

Liitä integration_ids-kentän kautta, kun luot tai päivität agentin:
Voit liittää useita integraatioita yhteen agenttiin. Agentin kehotteessa voidaan viitata niihin nimellä — “use get_weather when the caller asks about conditions” — tai agentti voi tunnistaa ne epäsuorasti skeemakuvausten perusteella.

5. Toteuta päätepiste

Kun agentti kutsuu työkalua, ThunderPhone lähettää allekirjoitetun POST-pyynnön endpoint_url-osoitteeseesi:
Palvelimesi vastaa JSONilla, joka välitetään takaisin LLM:lle:
LLM käsittelee vastauksen ja kertoo soittajalle selkokielisen yhteenvedon.
Allekirjoitus lasketaan pyynnön raakasisällöstä käyttäen samaa secret-arvoa kuin webhook-päätepisteesi. Vahvista se — työkalujen päätepisteet ovat internetiin näkyviä ja niihin kohdistuu samoja väärentämisriskejä kuin webhookeihin. Katso Webhook-allekirjoitusten vahvistaminen.

6. Testaa kokonaisuus

Käynnistä mikrofonisessio agenttia vasten ja esitä kysymys, jota työkalusi käsittelee (“What’s the weather in 94110?”). Puhelun transkriptio näyttää koko kierroksen:
Voit hakea tämän GET /v1/calls/{call_id}/transcript-kutsulla; raaka tapahtumavirta (merkintäkohtaisine ajoituksineen ja äänisiirtymineen) on saatavilla GET /v1/calls/{call_id}/history-kutsulla.

Yleiset sudenkuopat

LLM tekee päätöksen työkalun kuvauksen perusteella. Jos soittajan kysymys ei vastaa kuvausta, malli ei kutsu työkalua. Tarkennna kuvausta (lisää yleisiä synonyymejä ja ilmaisutapoja) tai mainitse se nimenomaisesti agentin kehotteessa (“When the caller asks about weather, use get_weather.”).
Yli 6 kB:n vastaukset katkaistaan transkription esikatselussa. Palauta vain LLM:n tarvitsemat kentät — älä koko tietuettasi.
Työkalujen päätepisteiden oletusaikakatkaisu on 10 sekuntia. Jos tarvitset enemmän aikaa, käsittele pyyntö asynkronisesti: palauta {"status": "pending", "request_id": "..."} ja tuo tulos esiin erillisellä työkalukutsulla.
Jokainen integraation PATCH luo uuden revision. Tarkista GET /v1/integrations/{id}/versions nähdäksesi, kuka muutti mitäkin. Jos rikot työkalun skeeman, voit palauttaa sen manuaalisesti tekemällä PATCH-pyynnön vanhemmällä tilannevedoksella.

Seuraavat vaiheet

Integraatioiden viite

CRUD, siirto, versiohistoria.

Function Tools -määritys

Täydellinen JSON-skeemakielioppi ja allekirjoitettujen päätepisteiden sopimus.

Vahvista allekirjoitukset

Käytä webhook-allekirjoitusmallia työkalujen päätepisteisiin.

Transkriptio- ja historia-API

Tarkastele työkalukutsun koko edestakaista kulkua.