Skip to main content
Narzędzia funkcji umożliwiają agentom AI wywoływanie zewnętrznych interfejsów API podczas rozmów telefonicznych. Używaj ich do wyszukiwania danych klientów, sprawdzania dostępności, umawiania wizyt lub wykonywania dowolnych działań obsługiwanych przez Twój backend.

Jak to działa

  1. Definiujesz narzędzia za pomocą schematu (jakie argumenty akceptuje narzędzie)
  2. Podajesz konfigurację endpoint (gdzie ThunderPhone wywołuje Twoje API) — lub pomijasz ją, aby otrzymywać wywołania narzędzi na webhooku organizacji
  3. Podczas rozmowy AI decyduje, kiedy użyć narzędzia, na podstawie rozmowy
  4. ThunderPhone wywołuje Twój endpoint z argumentami narzędzia
  5. 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 ma endpoint: 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 z endpoint, ThunderPhone wysyła żądanie do Twojego adresu URL:

Nagłówki żądania

Niestandardowe nagłówki z 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 organizacji
  • X-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.
Podpis jest tworzony z użyciem sekretu webhooka na poziomie organizacji z GET /v1/webhook. Jeśli Twoja organizacja nigdy nie skonfigurowała starszego webhooka, nie ma sekretu, a wywołania narzędzi zawierają wyłącznie X-ThunderPhone-Call-ID — obsługa, która kończy działanie błędem przy braku podpisu, odrzuciłaby je. Skonfiguruj starszy webhook, aby uzyskać sekret, lub umieść własny współdzielony sekret w endpoint.headers.

Treść żądania

W przypadku POST / PUT / PATCH treść zawiera wyłącznie argumenty narzędzia (bez opakowania), serializowane kanonicznie (posortowane klucze, zwarte separatory):
W przypadku 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:
Odpowiedź jest formatowana i przekazywana AI, aby kontynuowało rozmowę. Odpowiedzi inne niż JSON są opakowywane jako {"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 bez endpoint 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 / DELETE podpisują pusty ciąg bajtów
Pełne przykłady — w tym przypadek pustej treści i zastrzeżenie dotyczące braku sekretu — znajdziesz w Weryfikowanie podpisów webhooków.

Przykład: kompletny proces rezerwacji

Oto zestaw narzędzi dla kompletnego systemu umawiania wizyt:

Najlepsze praktyki

Pole description pomaga AI zrozumieć, kiedy użyć narzędzia. Precyzyjnie opisz, co robi i kiedy należy go użyć.
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.
Zwracaj tylko to, czego AI potrzebuje, aby kontynuować rozmowę. Duże ładunki danych spowalniają czas odpowiedzi.
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.