Skip to main content
Secara default, setiap nomor telepon dan kunci yang dapat dipublikasikan memiliki agen statis yang ditetapkan. Saat Anda memerlukan penyesuaian per-penelepon atau per-pengunjung — perutean VIP, konteks pengguna yang telah masuk, pengujian Prompt A/B — beralihlah ke mode webhook dan biarkan server Anda yang memutuskan.

Cara kerjanya

  1. Berlanggananlah ke peristiwa telephony.incoming (telepon) atau web.incoming (widget). Keduanya adalah webhook pemblokir: ThunderPhone menunggu hingga 10 detik untuk respons Anda sebelum melanjutkan panggilan.
  2. ThunderPhone mengirimkan {call_id, from_number, to_number} kepada Anda (sesi widget membawa field khusus widget, bukan nomor — lihat skema permintaan).
  3. Server Anda merespons dengan konfigurasi agen (Prompt, suara, produk, alat). ThunderPhone menggunakan konfigurasi tersebut untuk panggilan.
  4. 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

Untuk nomor telepon, langganankan endpoint Anda ke telephony.incoming:
Respons mencakup 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 pada new 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.