Skip to main content
Integracja narzędzia to wielokrotnego użytku punkt końcowy HTTP, który agent może wywołać podczas rozmowy. Przekazujesz ThunderPhone opis narzędzia w schemacie JSON oraz adres URL punktu końcowego; agent decyduje, kiedy je wywołać, na podstawie rozmowy, a ThunderPhone wysyła wychodzące żądanie HTTP ze swoich serwerów i zwraca odpowiedź agentowi.
Panel obsługuje większość potrzeb związanych z narzędziami bez użycia tego API: Połączenia → Aplikacje łączy Slack, HubSpot, Salesforce, Kalendarz Google, Arkusze Google i Cal.com za pomocą kilku kliknięć OAuth; Połączenia → API przekształca dowolne API HTTP w akcję agenta (wklej polecenie cURL, a kreator AI przygotuje narzędzie z wbudowaną funkcją Testuj żądanie); oraz Połączenia → MCP dodaje serwery MCP. Zobacz Połączenia. Ten przewodnik dotyczy bazowego API stojącego za sekcją API.
Ten przewodnik przedstawia kompleksowe tworzenie narzędzia do sprawdzania pogody.

Budowa narzędzia

Dwa elementy:
  1. Schemat — definicja funkcji w stylu OpenAI ({type: "function", function: {name, description, parameters}}), która informuje LLM, co robi narzędzie i jakie argumenty przyjmuje.
  2. Punkt końcowy — adres URL wywoływany przez serwery ThunderPhone, gdy LLM zdecyduje się użyć narzędzia. Żądanie to JSON POST z argumentami wybranymi przez LLM jako treścią.

1. Wybierz strategię przechowywania

Bezpośrednio w agencie

Dołącz jednorazowe narzędzie do tablicy tools agenta. Proste, ale nie nadaje się do ponownego użycia.

Zapisana integracja

Zapisz narzędzie jako integrację wielokrotnego użytku integration i połącz je z wieloma agentami. Zalecane dla wszystkiego, co jest używane więcej niż raz.
Ten przewodnik korzysta z metody zapisanej integracji.

2. Utwórz integrację

Zapisz zwrócone id (UUID).
Poświęć czas na przygotowanie description narzędzia oraz każdego parametru. LLM używa tych ciągów w czasie działania, aby zdecydować, czy i jak wywołać narzędzie. Nieprecyzyjne opisy → nieprecyzyjne wywołania narzędzi.

3. Przetestuj punkt końcowy w piaskownicy

Przed połączeniem integracji z agentem wyślij podpisane żądanie z serwerów ThunderPhone, aby potwierdzić łączność:
Response
Ten test wzmacnia również zabezpieczenia ThunderPhone przed SSRF — żądania do localhost lub prywatnych zakresów adresów IP zwracają 400 code=url_not_allowed.

4. Połącz integrację z agentem

Dołącz za pomocą integration_ids podczas tworzenia lub aktualizowania agenta:
Możesz połączyć wiele integracji z jednym agentem. Prompt agenta może odwoływać się do nich po nazwie — „użyj get_weather, gdy rozmówca pyta o warunki pogodowe” — albo może wykrywać je pośrednio na podstawie opisów schematu.

5. Zaimplementuj punkt końcowy

Gdy agent wywołuje narzędzie, ThunderPhone wysyła podpisane żądanie POST na Twój endpoint_url:
Twój serwer odpowiada kodem JSON, który jest przekazywany z powrotem do LLM:
LLM przetwarza tę odpowiedź i przekazuje rozmówcy zrozumiałe podsumowanie.
Podpis jest obliczany na podstawie surowej treści żądania przy użyciu tego samego secret co punkt końcowy webhooka. Zweryfikuj go — punkty końcowe narzędzi są dostępne z internetu i podlegają tym samym zagrożeniom związanym z podszywaniem się co webhooki. Zobacz Weryfikowanie podpisów webhooków.

6. Przetestuj przepływ

Uruchom sesję mikrofonu dla agenta i zadaj pytanie obsługiwane przez narzędzie („Jaka jest pogoda w 94110?”). Transkrypcja połączenia pokazuje pełny przepływ:
Możesz pobrać ją za pomocą GET /v1/calls/{call_id}/transcript; surowy strumień zdarzeń (z czasem dla każdego wpisu i przesunięciami audio) znajduje się pod GET /v1/calls/{call_id}/history.

Typowe pułapki

LLM podejmuje decyzję na podstawie opisu narzędzia. Jeśli pytanie rozmówcy nie pasuje do opisu, model nie wywoła narzędzia. Doprecyzuj opis (dodaj często używane synonimy i sformułowania) albo wyraźnie wspomnij o nim w prompcie agenta („Gdy rozmówca pyta o pogodę, użyj get_weather.”).
Odpowiedzi większe niż 6 kB są obcinane w podglądzie transkrypcji. Zwracaj tylko pola potrzebne LLM — nie cały wiersz.
Punkty końcowe narzędzi mają domyślny limit czasu 10 sekund. Jeśli potrzebujesz więcej, obsłuż to asynchronicznie: zwróć {"status": "pending", "request_id": "..."} i udostępnij wynik przez oddzielne wywołanie narzędzia.
Każde PATCH integracji tworzy nową wersję. Sprawdź GET /v1/integrations/{id}/versions, aby zobaczyć, kto co zmienił. Jeśli uszkodzisz schemat narzędzia, możesz ręcznie cofnąć zmiany, ponownie stosując PATCH do starszego migawki.

Kolejne kroki

Dokumentacja integracji

CRUD, transfer, historia wersji.

Specyfikacja narzędzi funkcji

Pełna gramatyka schematu JSON i kontrakt podpisanego punktu końcowego.

Weryfikacja podpisów

Zastosuj wzorzec podpisu webhooka do punktów końcowych narzędzi.

API transkrypcji i historii

Sprawdź pełny cykl wywołania narzędzia.