Jak to działa
- Definiujesz narzędzia za pomocą schematu (jakie argumenty akceptuje narzędzie)
- Podajesz konfigurację
endpoint(gdzie ThunderPhone wywołuje Twoje API) — lub pomijasz ją, aby otrzymywać wywołania narzędzi na webhooku organizacji - Podczas rozmowy AI decyduje, kiedy użyć narzędzia, na podstawie rozmowy
- ThunderPhone wywołuje Twój endpoint z argumentami narzędzia
- Odpowiedź Twojego API jest przekazywana z powrotem do AI, aby kontynuować rozmowę
Narzędzia funkcji to ścieżka, w której używasz własnego API. ThunderPhone oferuje również
narzędzia zarządzane przez platformę, które nie wymagają endpointu:
połączenia aplikacji (HubSpot, Salesforce, Slack,
Kalendarz Google, Arkusze Google, Cal.com),
połączenia API oraz
serwery MCP.
Schemat narzędzia
Każde narzędzie ma następującą strukturę:Definicja funkcji
Konfiguracja endpointu
Konfiguracja
endpoint nie jest wysyłana do modelu AI — jest używana wyłącznie przez ThunderPhone do wykonania wywołania narzędzia.Dwie ścieżki wywołania
To, które żądanie otrzyma Twój serwer, zależy od tego, czy narzędzie maendpoint:
Obie ścieżki są blokujące — AI czeka w środku zdania na
wynik — z limitem czasu 20 s. Zadbaj o szybkie handlery. Możesz je
łączyć: w rozmowie, której organizacja ma adres URL webhooka, narzędzia z
endpoint są
wywoływane bezpośrednio, a pozostałe korzystają z webhooka.
Bezpośrednie wywołania endpointów
Gdy AI wywołuje narzędzie zendpoint, ThunderPhone wysyła
żądanie do Twojego adresu URL:
Nagłówki żądania
endpoint.headers są zawsze dołączane
dosłownie, wraz z dwoma nagłówkami w przestrzeni nazw ThunderPhone:
X-ThunderPhone-Signature— HMAC-SHA256 dokładnych bajtów treści żądania, z kluczem będącym Twoim sekretem webhooka organizacjiX-ThunderPhone-Call-ID— identyfikator bieżącego połączenia
Content-Type: application/json jest ustawiane, chyba że zostanie
zastąpione przez endpoint.headers — niestandardowy Content-Type ma pierwszeństwo.
Treść żądania
W przypadkuPOST / PUT / PATCH treść zawiera wyłącznie argumenty
narzędzia (bez opakowania), serializowane kanonicznie (posortowane klucze,
zwarte separatory):
GET / DELETE argumenty są wysyłane jako parametry zapytania,
a treść jest pusta — podpis jest wtedy obliczany na pustym
ciągu bajtów. Zobacz
Weryfikowanie podpisów webhooków.
Odpowiedź
Zwróć odpowiedź JSON z wynikiem narzędzia:{"data": "<text>"};
przekroczenia limitu czasu i błędy połączenia są zgłaszane AI jako błędy, dzięki czemu
agent może przeprosić i przejść dalej zamiast się zatrzymać.
Dystrybucja w trybie webhooka
Narzędzia bezendpoint są wysyłane na starszy adres URL webhooka Twojej
organizacji jako podpisane żądanie telephony.tool (połączenia telefoniczne) lub web.tool
(połączenia internetowe). W przeciwieństwie do powiadomień audytowych
dostarczanych do endpointów webhooków po wykonaniu, to żądanie jest
wykonaniem — Twoja odpowiedź HTTP jest wynikiem narzędzia.
web.tool zawiera origin_domain zamiast from_number /
to_number. Odpowiedz wynikiem narzędzia w formacie JSON — obowiązuje ten sam kontrakt
odpowiedzi co w przypadku bezpośrednich wywołań endpointów. Żądanie jest podpisywane sekretem
webhooka organizacji na podstawie nieprzetworzonej treści, tak jak każdy inny webhook.
Subskrybowane endpointy webhooków dodatkowo
otrzymują nieblokujące powiadomienie
telephony.tool / web.tool
po wykonaniu każdego narzędzia (niezależnie od ścieżki, która je uruchomiła),
wraz z odpowiedzią narzędzia — przydatne do ścieżek audytu. Zobacz
katalog zdarzeń.Weryfikacja podpisu
Bezpośrednie wywołania narzędzi są podpisywane tak samo jak webhooki:- HMAC-SHA256 obliczany na dokładnych bajtach treści żądania (kanoniczny JSON — posortowane klucze, bez dodatkowych białych znaków)
- Z użyciem sekretu webhooka organizacji
- Narzędzia
GET/DELETEpodpisują pusty ciąg bajtów
Przykład: kompletny proces rezerwacji
Oto zestaw narzędzi dla kompletnego systemu umawiania wizyt:Najlepsze praktyki
Pisz jasne opisy
Pisz jasne opisy
Pole
description pomaga AI zrozumieć, kiedy użyć narzędzia. Precyzyjnie opisz, co robi i kiedy należy go użyć.Obsługuj błędy w odpowiedni sposób
Obsługuj błędy w odpowiedni sposób
Zwracaj komunikaty o błędach, które AI może zrozumieć:
{"error": "No slots available for that date"} zamiast ogólnych błędów 500.Zachowaj zwięzłość odpowiedzi
Zachowaj zwięzłość odpowiedzi
Zwracaj tylko to, czego AI potrzebuje, aby kontynuować rozmowę. Duże ładunki danych spowalniają czas odpowiedzi.
Rozważnie używaj wymaganych pól
Rozważnie używaj wymaganych pól
Oznaczaj pola jako
required tylko wtedy, gdy jest to naprawdę konieczne. AI poprosi użytkownika o wymagane informacje przed wywołaniem narzędzia.Powiązane
Połączenia aplikacji
Narzędzia zarządzane przez platformę dla HubSpot, Salesforce, Slack, Kalendarza Google, Arkuszy Google i Cal.com — nie wymagają punktu końcowego.
Serwery MCP
Podłącz serwer MCP i pozwól agentowi wywoływać jego narzędzia.
Połączenia API
Integracje REST wielokrotnego użytku, które możesz podłączać do agentów.
Weryfikowanie podpisów webhooków
Jedno narzędzie pomocnicze do weryfikacji webhooków i wywołań narzędzi.