Skip to main content
Funkční nástroje umožňují vašim AI hlasovým agentům během telefonních hovorů volat externí rozhraní API. Použijte je k vyhledávání údajů o zákaznících, kontrole dostupnosti, rezervaci schůzek nebo provedení libovolné akce, kterou váš backend podporuje.

Jak to funguje

  1. Definujete nástroje pomocí schématu (jaké argumenty nástroj přijímá)
  2. Poskytnete konfiguraci endpoint (kam ThunderPhone volá vaše API) — nebo ji vynecháte, aby se volání nástrojů přijímala na webhooku vaší organizace
  3. Během hovoru AI podle konverzace rozhodne, kdy nástroj použít
  4. ThunderPhone zavolá váš endpoint s argumenty nástroje
  5. Odpověď vašeho API se předá zpět AI, aby mohla pokračovat v konverzaci
Funkční nástroje představují cestu, při které používáte vlastní API. ThunderPhone také nabízí nástroje spravované platformou, které endpoint nepotřebují: připojení aplikací (HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, Cal.com), připojení API a servery MCP.

Schéma nástroje

Každý nástroj má tuto strukturu:

Definice funkce

Konfigurace endpointu

Konfigurace endpoint se modelu AI neodesílá — ThunderPhone ji používá pouze k provedení volání nástroje.

Dvě cesty vyvolání

To, jaký požadavek váš server obdrží, závisí na tom, zda nástroj má endpoint: Obě cesty jsou blokující — AI uprostřed věty čeká na výsledek — s časovým limitem 20 s. Udržujte obslužné rutiny rychlé. Kombinace je v pořádku: při hovoru, jehož organizace má adresu URL webhooku, jsou nástroje s endpoint volány přímo a ostatní se vracejí k webhooku.

Přímá volání endpointu

Když AI vyvolá nástroj, který má endpoint, ThunderPhone odešle požadavek na vaši adresu URL:

Hlavičky požadavku

Vlastní hlavičky z vašeho endpoint.headers jsou vždy zahrnuty beze změny spolu se dvěma hlavičkami v prostoru názvů ThunderPhone:
  • X-ThunderPhone-Signature — HMAC-SHA256 přes přesné bajty těla požadavku s klíčem ve vašem tajemství webhooku organizace
  • X-ThunderPhone-Call-ID — ID aktuálního hovoru
Content-Type: application/json je nastaveno, pokud jej vaše endpoint.headers nepřepíší — vlastní Content-Type má přednost.
Podpis používá jako klíč tajemství webhooku na úrovni organizace z GET /v1/webhook. Pokud vaše organizace nikdy nenakonfigurovala starší webhook, žádné tajemství neexistuje a volání nástrojů obsahují pouze X-ThunderPhone-Call-ID — obslužná funkce, která selže při chybějícím podpisu, by je odmítla. Buď nakonfigurujte starší webhook, abyste získali tajemství, nebo do endpoint.headers vložte vlastní sdílené tajemství.

Tělo požadavku

Pro POST / PUT / PATCH obsahuje tělo pouze argumenty nástroje (bez obálky), serializované kanonicky (seřazené klíče, kompaktní oddělovače):
Pro GET / DELETE jsou argumenty odeslány jako parametry dotazu a tělo je prázdné — podpis se pak vypočítá přes prázdný bajtový řetězec. Viz Ověření podpisů webhooků.

Odpověď

Vraťte odpověď JSON s výsledkem nástroje:
Odpověď se naformátuje a poskytne AI, aby mohla pokračovat v konverzaci. Odpovědi jiné než JSON jsou zabaleny jako {"data": "<text>"}; časové limity a selhání připojení jsou AI nahlášeny jako chyby, takže se agent může omluvit a pokračovat, místo aby se zasekl.

Odesílání v režimu webhooku

Nástroje bez endpoint jsou odesílány na starší adresu URL webhooku vaší organizace jako podepsaný požadavek telephony.tool (telefonní hovory) nebo web.tool (webová volání). Na rozdíl od notifikací auditu doručovaných na endpointy webhooků po provedení je tento požadavek samotným provedením — vaše odpověď HTTP je výsledkem nástroje.
web.tool obsahuje origin_domain místo from_number / to_number. Odpovězte výsledkem nástroje ve formátu JSON — se stejným kontraktem odpovědi jako u přímých volání endpointu. Požadavek je podepsán tajemstvím webhooku organizace přes nezpracované tělo, stejně jako každý jiný webhook.
Odebírané endpointy webhooků navíc obdrží neblokující notifikaci telephony.tool / web.tool po provedení každého nástroje (bez ohledu na použitou cestu), včetně odpovědi nástroje — což je užitečné pro auditní záznamy. Viz katalog událostí.

Ověření podpisu

Přímá volání nástrojů se podepisují stejným způsobem jako webhooky:
  • HMAC-SHA256 přes přesné bajty těla požadavku (kanonický JSON — seřazené klíče, bez nadbytečných mezer)
  • S vaším tajným klíčem webhooku organizace
  • Nástroje GET / DELETE podepisují prázdný bajtový řetězec
Úplné postupy — včetně případu s prázdným tělem a upozornění na chybějící tajný klíč — najdete v části Ověření podpisů webhooků.

Příklad: Kompletní proces rezervace

Zde je sada nástrojů pro kompletní systém rezervace termínů:

Osvědčené postupy

Pole description pomáhá AI pochopit, kdy nástroj použít. Konkrétně popište, co nástroj dělá a kdy je vhodné ho použít.
Vracejte chybové zprávy, kterým AI rozumí: {"error": "No slots available for that date"} namísto obecných chyb 500.
Vracejte pouze to, co AI potřebuje k pokračování v konverzaci. Velké datové objemy zpomalují dobu odezvy.
Označujte pole jako required pouze tehdy, když je to skutečně nutné. AI před voláním nástroje požádá uživatele o požadované informace.

Související

Připojení aplikací

Nástroje spravované platformou pro HubSpot, Salesforce, Slack, Kalendář Google, Tabulky Google a Cal.com — není vyžadován žádný endpoint.

Servery MCP

Připojte server MCP a umožněte agentovi volat jeho nástroje.

Připojení API

Znovupoužitelné integrace REST, které můžete připojit k agentům.

Ověřování podpisů webhooků

Jeden pomocný nástroj pro ověřování webhooků a volání nástrojů.