Skip to main content
Alat fungsi memungkinkan agen suara AI Anda memanggil API eksternal selama panggilan telepon. Gunakan alat ini untuk mencari data pelanggan, memeriksa ketersediaan, menjadwalkan janji temu, atau melakukan tindakan apa pun yang didukung backend Anda.

Cara Kerjanya

  1. Tentukan alat dengan skema (argumen yang diterima alat)
  2. Sediakan konfigurasi endpoint (tempat ThunderPhone memanggil API Anda) — atau biarkan kosong untuk menerima panggilan alat pada webhook organisasi Anda
  3. Selama panggilan, AI memutuskan kapan menggunakan alat berdasarkan percakapan
  4. ThunderPhone memanggil endpoint Anda dengan argumen alat
  5. Respons API Anda dikirim kembali ke AI untuk melanjutkan percakapan
Alat fungsi adalah jalur bawa-API-Anda-sendiri. ThunderPhone juga menyediakan alat yang dikelola Platform dan tidak memerlukan endpoint: koneksi aplikasi (HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, Cal.com), koneksi API, dan server MCP.

Skema Alat

Setiap alat mengikuti struktur ini:

Definisi Fungsi

Konfigurasi Endpoint

Konfigurasi endpoint tidak dikirim ke model AI—konfigurasi ini hanya digunakan oleh ThunderPhone untuk menjalankan panggilan alat.

Dua jalur pemanggilan

Permintaan yang diterima server Anda bergantung pada apakah alat memiliki endpoint: Kedua jalur bersifat memblokir — AI menunggu di tengah kalimat untuk hasilnya — dengan batas waktu 20 d. Pastikan handler tetap cepat. Kombinasi keduanya tidak masalah: pada panggilan dengan organisasi yang memiliki URL webhook, alat dengan endpoint dipanggil langsung dan sisanya kembali menggunakan webhook.

Panggilan endpoint langsung

Saat AI memanggil tool yang memiliki endpoint, ThunderPhone mengirimkan permintaan ke URL Anda:

Header Permintaan

Header kustom dari endpoint.headers Anda selalu disertakan secara verbatim, ditambah dua header dengan namespace ThunderPhone:
  • X-ThunderPhone-Signature — HMAC-SHA256 dari byte body permintaan yang tepat, menggunakan secret webhook organisasi Anda sebagai kunci
  • X-ThunderPhone-Call-ID — ID panggilan saat ini
Content-Type: application/json ditetapkan kecuali endpoint.headers Anda menimpanya — Content-Type kustom akan digunakan.
Tanda tangan menggunakan secret webhook tingkat organisasi dari GET /v1/webhook. Jika organisasi Anda belum pernah mengonfigurasi webhook lama, tidak ada secret dan panggilan tool hanya membawa X-ThunderPhone-Call-ID — handler yang gagal secara paksa saat tanda tangan tidak ada akan menolaknya. Konfigurasikan webhook lama untuk mendapatkan secret, atau tempatkan secret bersama Anda sendiri di endpoint.headers.

Body Permintaan

Untuk POST / PUT / PATCH, body hanya berisi argumen tool (tanpa wrapper), yang diserialisasi secara kanonis (kunci diurutkan, pemisah ringkas):
Untuk GET / DELETE, argumen dikirim sebagai parameter kueri dan body kosong — tanda tangan kemudian dihitung atas string byte kosong. Lihat Verifikasi tanda tangan webhook.

Respons

Kembalikan respons JSON dengan hasil tool:
Respons diformat dan diberikan kepada AI untuk melanjutkan percakapan. Respons non-JSON dibungkus sebagai {"data": "<text>"}; timeout dan kegagalan koneksi dilaporkan kepada AI sebagai error, sehingga agen dapat meminta maaf dan melanjutkan alih-alih terhenti.

Pengiriman mode webhook

Tool tanpa endpoint dikirim ke URL webhook lama organisasi Anda sebagai permintaan telephony.tool (panggilan telepon) atau web.tool (panggilan web) yang ditandatangani. Tidak seperti notifikasi audit yang dikirimkan ke endpoint webhook setelah eksekusi, permintaan ini adalah eksekusinya — respons HTTP Anda adalah hasil tool.
web.tool membawa origin_domain alih-alih from_number / to_number. Respons dengan hasil tool sebagai JSON — kontrak responsnya sama seperti panggilan endpoint langsung. Permintaan ditandatangani dengan secret webhook organisasi atas body mentah, seperti setiap webhook lainnya.
Endpoint webhook yang berlangganan juga menerima notifikasi telephony.tool / web.tool nonpemblokiran setelah setiap tool dieksekusi (jalur mana pun yang menjalankannya), termasuk respons tool — berguna untuk jejak audit. Lihat katalog event.

Verifikasi Tanda Tangan

Panggilan alat langsung ditandatangani dengan cara yang sama seperti webhook:
  • HMAC-SHA256 atas byte isi permintaan yang persis sama (JSON kanonis — kunci diurutkan, tanpa spasi tambahan)
  • Menggunakan secret webhook organisasi Anda sebagai kunci
  • Alat GET / DELETE menandatangani string byte kosong
Resep lengkap — termasuk kasus isi kosong dan catatan tanpa secret — tersedia di Verifikasi tanda tangan webhook.

Contoh: Alur Pemesanan Lengkap

Berikut adalah sekumpulan alat untuk sistem pemesanan janji temu lengkap:

Praktik Terbaik

Kolom description membantu AI memahami kapan harus menggunakan tool. Jelaskan secara spesifik fungsi tool tersebut dan kapan tool tersebut sesuai digunakan.
Kembalikan pesan error yang dapat dipahami AI: {"error": "No slots available for that date"} alih-alih error 500 generik.
Kembalikan hanya informasi yang diperlukan AI untuk melanjutkan percakapan. Payload besar memperlambat waktu respons.
Tandai kolom sebagai required hanya jika benar-benar diperlukan. AI akan meminta informasi wajib kepada pengguna sebelum memanggil tool.

Terkait

Koneksi aplikasi

Tool yang dikelola Platform untuk HubSpot, Salesforce, Slack, Google Calendar, Google Sheets, dan Cal.com — tidak memerlukan endpoint.

Server MCP

Hubungkan server MCP dan biarkan agen memanggil tool-nya.

Koneksi API

Integrasi REST yang dapat digunakan kembali dan dapat Anda hubungkan ke agen.

Verifikasi signature webhook

Satu helper verifikasi untuk webhook dan pemanggilan tool.