Skip to main content
Sebuah integrasi alat adalah endpoint HTTP yang dapat digunakan kembali yang dapat dipanggil agen selama panggilan. Anda memberikan ThunderPhone deskripsi skema JSON untuk alat tersebut beserta URL endpoint; agen memutuskan kapan akan memanggilnya berdasarkan percakapan, lalu ThunderPhone membuat permintaan HTTP keluar dari servernya dan mengembalikan respons kepada agen.
Dasbor mencakup sebagian besar kebutuhan alat tanpa API ini: Koneksi → Aplikasi menghubungkan Slack, HubSpot, Salesforce, Google Calendar, Google Sheets, dan Cal.com dalam beberapa klik OAuth; Koneksi → API mengubah API HTTP apa pun menjadi tindakan agen (tempel perintah cURL dan wizard AI akan menyusun alat, dengan Test Request bawaan); dan Koneksi → MCP menambahkan server MCP. Lihat Koneksi. Panduan ini membahas API mentah yang mendasari antarmuka API.
Panduan ini menjelaskan pembuatan alat pencarian cuaca dari awal hingga akhir.

Anatomi alat

Dua bagian:
  1. Skema — definisi fungsi bergaya OpenAI ({type: "function", function: {name, description, parameters}}) yang memberi tahu LLM fungsi alat tersebut dan argumen yang diterimanya.
  2. Endpoint — URL yang dipanggil server ThunderPhone saat LLM memutuskan untuk menggunakan alat tersebut. Permintaannya berupa JSON POST dengan argumen yang dipilih LLM sebagai isi permintaan.

1. Pilih strategi penyimpanan

Inline pada agen

Lampirkan alat sekali pakai ke array tools agen. Sederhana, tetapi tidak dapat digunakan kembali.

Integrasi tersimpan

Simpan alat sebagai integrasi yang dapat digunakan kembali dan tautkan dari banyak agen. Direkomendasikan untuk apa pun yang digunakan lebih dari sekali.
Panduan ini menggunakan jalur integrasi tersimpan.

2. Buat integrasi

Simpan id yang dikembalikan (sebuah UUID).
Luangkan upaya sungguh-sungguh untuk description alat dan setiap parameter. LLM menggunakan string ini saat runtime untuk memutuskan apakah dan bagaimana memanggil alat tersebut. Deskripsi yang samar → panggilan alat yang samar.

3. Uji endpoint di sandbox

Sebelum menautkan integrasi ke agen, kirim permintaan bertanda tangan dari server ThunderPhone untuk mengonfirmasi konektivitas:
Response
Pengujian ini juga memperkuat pengaman SSRF ThunderPhone — permintaan ke localhost atau rentang IP privat mengembalikan 400 code=url_not_allowed.

4. Tautkan integrasi ke agen

Lampirkan melalui integration_ids saat Anda membuat atau memperbarui agen:
Anda dapat menautkan banyak integrasi ke satu agen. Prompt agen dapat merujuknya berdasarkan nama — “gunakan get_weather saat penelepon bertanya tentang kondisi cuaca” — atau agen dapat menemukannya secara implisit dari deskripsi skema.

5. Implementasikan endpoint

Saat agen memanggil alat, ThunderPhone mengirim POST yang ditandatangani ke endpoint_url Anda:
Server Anda merespons dengan JSON yang diteruskan kembali ke LLM:
LLM menerima respons tersebut dan menyampaikan ringkasan yang natural kepada penelepon.
Tanda tangan dihitung berdasarkan isi permintaan mentah menggunakan secret yang sama dengan endpoint webhook Anda. Verifikasi tanda tangan tersebut — endpoint alat dapat diakses dari internet dan menghadapi risiko pemalsuan yang sama seperti webhook. Lihat Verifikasi tanda tangan webhook.

6. Uji alurnya

Jalankan sesi mikrofon terhadap agen dan ajukan pertanyaan yang ditangani alat Anda (“Bagaimana cuaca di 94110?”). Transkrip panggilan menampilkan perjalanan bolak-balik lengkap:
Anda dapat mengambilnya melalui GET /v1/calls/{call_id}/transcript; stream peristiwa mentah (dengan waktu per entri dan offset audio) tersedia di GET /v1/calls/{call_id}/history.

Hal yang sering terlewat

LLM memutuskan berdasarkan deskripsi alat. Jika pertanyaan penelepon tidak sesuai dengan deskripsi, model tidak akan memanggil alat. Perjelas deskripsinya (tambahkan sinonim dan frasa umum) atau sebutkan secara eksplisit dalam Prompt agen (“Saat penelepon bertanya tentang cuaca, gunakan get_weather.”).
Respons di atas 6 kB dipotong dalam pratinjau transkrip. Kembalikan hanya kolom yang dibutuhkan LLM — bukan seluruh baris data Anda.
Endpoint alat memiliki timeout default 10 detik. Jika Anda memerlukan waktu lebih lama, tangani secara asinkron: kembalikan {"status": "pending", "request_id": "..."} dan tampilkan hasilnya melalui pemanggilan alat terpisah.
Setiap PATCH integrasi membuat revisi baru. Periksa GET /v1/integrations/{id}/versions untuk melihat siapa yang mengubah apa. Jika Anda merusak skema sebuah alat, Anda dapat melakukan rollback secara manual dengan menerapkan kembali snapshot lama melalui PATCH.

Langkah berikutnya

Referensi integrasi

CRUD, transfer, riwayat versi.

Spesifikasi Function Tools

Tata bahasa skema JSON lengkap dan kontrak endpoint bertanda tangan.

Verifikasi tanda tangan

Terapkan pola tanda tangan webhook ke endpoint tool.

API transkrip + riwayat

Periksa seluruh alur bolak-balik panggilan tool.