Cara kerjanya
- Berlanggananlah ke peristiwa
telephony.incoming(telepon) atauweb.incoming(widget). Keduanya adalah webhook pemblokir: ThunderPhone menunggu hingga 10 detik untuk respons Anda sebelum melanjutkan panggilan. - ThunderPhone mengirimkan
{call_id, from_number, to_number}kepada Anda (sesi widget membawa field khusus widget, bukan nomor — lihat skema permintaan). - Server Anda merespons dengan konfigurasi agen (Prompt, suara, produk, alat). ThunderPhone menggunakan konfigurasi tersebut untuk panggilan.
- Jika Anda mengembalikan
{}, mengalami time out, atau terjadi error, agen yang ditetapkan secara statis digunakan sebagai fallback. Default yang aman.
Berfungsi sama untuk panggilan telepon (
telephony.incoming) dan sesi
widget (web.incoming), baik dikirimkan ke endpoint webhook
maupun ke webhook URL tunggal lama.1. Konfigurasikan tujuan webhook
- Panggilan telepon
- Widget web
Untuk nomor telepon, langganankan endpoint Anda ke Respons mencakup
telephony.incoming:secret sekali pakai — simpan; Anda akan menggunakannya
untuk verifikasi tanda tangan.2. Implementasikan handler
Tiga pedoman praktis:- Verifikasi tanda tangan pada setiap permintaan (lihat Verifikasi tanda tangan webhook). Jangan lewati ini di lingkungan pengembangan — pastikan benar sekali lalu gunakan kembali.
- Respons dengan cepat. Sepuluh detik adalah batas mutlak, dan setiap detik adalah keheningan bagi penelepon. Lakukan pencarian database jika perlu, tetapi jangan panggil LLM downstream secara sinkron — jika Anda menginginkan pembuatan Prompt dinamis, hitung terlebih dahulu dan simpan dalam cache.
- Lakukan fallback dengan rapi. Setiap status yang tidak terduga harus mengembalikan
{}agar agen yang ditetapkan secara statis menangani panggilan.
3. Skema respons
Isi respons sama persis dengan skema respons panggilan masuk. Kolom yang umum digunakan:Urutan bicara per panggilan dan
max_hold_seconds tidak tersedia pada
respons webhook. Tetapkan keduanya pada
Agen yang Anda referensikan.Pola
Konteks pengguna yang sudah Masuk
Dalam widget mode webhook, halaman pengunjung sudah mengetahui siapa mereka. Panggil webhook Anda dengan parameter query string yang diteruskan oleh SDK widget (?customer_id=123), lalu cari pelanggan di sisi server.
Peluncuran Prompt A/B
Sebelum Anda membuatnya sendiri, perlu diketahui bahwa ThunderPhone memiliki fitur Experiments bawaan (/dashboard/experiments dan tab A/B di builder agen) yang
menentukan varian, membagi traffic, dan membandingkan hasil per varian —
tanpa webhook.
Jika Anda tetap memerlukan kontrol di sisi webhook: hash call_id → bucket;
sajikan Prompt A untuk 0..49 dan Prompt B untuk 50..99. Catat bucket yang
Anda pilih di DB Anda sendiri, lalu korelasikan dengan nilai panggilan yang telah
selesai.
Perutean berbasis waktu
Jam kerja → agen “dukungan langsung”; di luar jam kerja → agen “mencatat pesan”. Switch murni padanew Date().getUTCHours() di handler Anda.
Langkah berikutnya
Referensi webhook panggilan masuk
Skema permintaan + respons yang tepat, termasuk setiap kunci konfigurasi.
Verifikasi signature webhook
Pastikan HMAC benar sekali; gunakan ulang di mana saja.
Buat integrasi tool
Gabungkan perutean dinamis dengan tool per agen.
Semantik pengiriman
Percobaan ulang, pengurutan, time-out.