Skip to main content
Varsayılan olarak her telefon numarasına ve yayımlanabilir anahtara statik bir ajan atanır. Arayan bazında veya ziyaretçi bazında özelleştirme gerektiğinde — VIP yönlendirme, oturum açmış kullanıcı bağlamı, A/B istem testleri — webhook moduna geçin ve karar vermeyi sunucunuza bırakın.

Nasıl çalışır

  1. telephony.incoming (telefon) veya web.incoming (widget) etkinliğine abone olun. Her ikisi de engelleyici webhook’lardır: ThunderPhone, aramaya devam etmeden önce yanıtınızı en fazla 10 saniye bekler.
  2. ThunderPhone size {call_id, from_number, to_number} gönderir (widget oturumları numaralar yerine widget’a özgü alanlar içerir — bkz. istek şeması).
  3. Sunucunuz bir ajan yapılandırmasıyla yanıt verir (istem, ses, ürün, araçlar). ThunderPhone bu yapılandırmayı arama için kullanır.
  4. {} döndürürseniz, zaman aşımı oluşursa veya hata meydana gelirse, statik olarak atanmış ajan yedek olarak kullanılır. Güvenli varsayılan.
İster bir webhook uç noktasına ister eski tek URL’li webhook’a teslim edilsin, telefon aramaları (telephony.incoming) ve widget oturumları (web.incoming) için aynı şekilde çalışır.

1. Webhook hedefini yapılandırın

Telefon numaraları için uç noktanızı telephony.incoming etkinliğine abone edin:
Yanıt, tek kullanımlık bir secret içerir — kaydedin; bunu imza doğrulaması için kullanacaksınız.

2. İşleyiciyi uygulayın

Üç temel kural:
  • Her istekte imzayı doğrulayın (webhook imzalarını doğrulama bölümüne bakın). Bunu geliştirme ortamında atlamayın — bir kez doğru yapın ve yeniden kullanın.
  • Hızlı yanıt verin. On saniye kesin sınırdır ve her saniye arayan için sessizliktir. Gerekiyorsa veritabanı sorguları yapın, ancak alt seviye LLM’leri eşzamanlı olarak çağırmayın — dinamik istem oluşturmak istiyorsanız önceden hesaplayın ve önbelleğe alın.
  • Temiz bir şekilde geri dönün. Beklenmeyen her durum, statik olarak atanan ajanın çağrıyı işlemesi için {} döndürmelidir.

3. Yanıt şeması

Yanıt gövdesi, gelen çağrı yanıt şemasıyla tam olarak eşleşir. Sık kullanılan alanlar:
Çağrı başına konuşma sırası ve max_hold_seconds, webhook yanıtında kullanılamaz. Bunları başvurduğunuz Ajan üzerinde ayarlayın.

Kalıplar

Oturum açmış kullanıcı bağlamı

Webhook modundaki widget’larda ziyaretçinin sayfası, kim olduğunu zaten bilir. Widget SDK’sının ilettiği bir sorgu dizesi parametresiyle (?customer_id=123) webhook’unuzu çağırın ve müşteriyi sunucu tarafında bulun.

A/B istemi kullanıma sunma

Bunu kendiniz geliştirmeden önce, ThunderPhone’un varyantları tanımlayan, trafiği bölen ve varyant başına sonuçları karşılaştıran yerel bir Deneyler özelliği (/dashboard/experiments ve ajan oluşturucunun A/B sekmesi) olduğunu unutmayın — webhook gerekmez. Yine de webhook tarafında kontrol gerekiyorsa: call_id değerini hash’leyin → kovaya ayırın; 0..49 için A istemini, 50..99 için B istemini sunun. Seçtiğiniz kovayı kendi veritabanınıza kaydedin ve daha sonra tamamlanan çağrının notuyla ilişkilendirin.

Zamana dayalı yönlendirme

Mesai saatleri → “canlı destek” ajanı; mesai dışı → “mesaj alın” ajanı. İşleyicinizde new Date().getUTCHours() üzerinde basit bir geçiş yeterlidir.

Sonraki adımlar

Gelen çağrı webhook başvurusu

Her yapılandırma anahtarı dahil olmak üzere tam istek ve yanıt şemaları.

Webhook imzalarını doğrulayın

HMAC’i bir kez doğru uygulayın; her yerde yeniden kullanın.

Bir araç entegrasyonu oluşturun

Dinamik yönlendirmeyi ajan başına araçlarla birleştirin.

Teslimat semantiği

Yeniden denemeler, sıralama, zaman aşımları.