Dakika Nasıl Düşülür?
Bir arama bittiğinde bakiyenden ne zaman ve ne kadar düşüldüğünü bilmek, faturanı sürprizsiz takip etmenin tek yolu. Purvisor’da düşüm, arama gerçekten sona erdiği anda olur — ayrı bir “faturalama işlemi” beklemene gerek yok. En kritik kural şu: 30 saniyeden kısa süren aramalar (meşgul, açılmadı, hemen kapattı) hiçbir şekilde ücretlendirilmez.
Düşüm hangi anda gerçekleşir?
Aramayı yürüten yapay zeka asistanı (LiveKit tabanlı ses motoru), görüşme bittiğinde Purvisor backend’ine bir durum bildirimi gönderir: /api/agent/status. Dakika düşümü tam olarak bu bildirim işlendiğinde gerçekleşir — bu, sistemdeki birincil faturalama noktasıdır.
Bunun ayrıca bir nedeni var: LiveKit altyapısının kendi olay bildirimi (webhook) de birkaç saniye sonra ayrıca gelir, ama arama o noktada zaten “tamamlandı” durumuna geçmiş olduğu için LiveKit’in bildirimi genelde hiçbir şey yapmadan geçer. Yani asıl düşüm agent’ın kendi bildiriminde olur, LiveKit’in bildirimi sadece bir yedek/doğrulama turudur.
Arama biter (agent tarafında)
↓
POST /api/agent/status → Purvisor backend
↓
Süre hesaplanır (aramanın başlangıcından bu ana kadar geçen saniye)
↓
Süre 30 saniyenin altında mı?
├─ Evet → durum: failed, DAKİKA DÜŞÜLMEZ
└─ Hayır → durum: completed / transferred, dakika düşülür
↓
LiveKit'in kendi webhook'u geldiğinde:
bu callId zaten faturalanmış → hiçbir şey yapmaz (çift düşüm yok)Düşüm mantığı idempotent çalışır: aynı arama için ikinci bir bildirim (webhook tekrarı, ağ gecikmesi vb.) gelse bile aynı arama iki kez faturalandırılmaz. Sistem önce o callId için zaten bir kullanım kaydı var mı diye bakar; varsa hiçbir şey yapmaz. Aynı anda iki bildirim yarışırsa da veritabanındaki benzersizlik kısıtı ikinciyi güvenle engeller.
Dakika nasıl hesaplanır?
Süre saniye cinsinden hesaplanır, sonra dakikaya yukarı yuvarlanır. Yani 61 saniyelik bir arama 2 dakika olarak düşülür; 30 saniyelik bir arama (tam eşik) 1 dakika olarak düşülür. Küsuratlı dakika diye bir şey yok — her arama en az 1 dakika, sonrası tam sayıya yuvarlanarak işler.
”Başarısız” arama sayılan durumlar — ve neden ücretsiz
| Arama süresi | Durum | Dakika düşülür mü? |
|---|---|---|
| 30 saniyenin altı | failed (meşgul / açılmadı / hemen kapandı) | Hayır |
| 30 saniye ve üzeri | completed veya transferred | Evet, yukarı yuvarlanarak |
Bu 30 saniyelik eşik rastgele değil: oda kurulumu (yaklaşık 2 saniye), SIP hattının çevirme süresi (yaklaşık 3 saniye) ve çalma süresi (yaklaşık 10-20 saniye) toplamda bu kadar teknik gecikme yaratabiliyor. Gerçek bir görüşme — karşı taraf telefonu açıp asistanla birkaç cümle konuştuysa — neredeyse her zaman 30 saniyeyi geçer. Bu yüzden eşiğin altındaki her şey “muhtemelen kimse cevap vermedi” kabul edilir ve bakiyenden hiç düşülmez.
Bir çağrı zaten
failed(örneğin sağlayıcı hatası nedeniyle) veyatransferredolarak işaretlenmişse, bu durum daha sonra üzerine yazılmaz — yani bir aramanın nihai durumu ilk belirlendiği şekilde kalır.
Kampanya aramalarında bu eşik yeniden deneme mantığıyla da bağlantılı: 30 saniyenin altında kalan bir kampanya araması otomatik olarak yeniden denemeye alınır (varsayılan olarak en fazla 3 deneme, denemeler arasında 30 dakika bekleme — kampanya ayarlarından değiştirilebilir). Deneme hakkı biterse kontak “tamamlandı/başarısız” olarak kapatılır, aramaya devam edilmez.
Bakiye hiçbir zaman negatife düşmez
Dakika bakiyen sıfıra yaklaşsa bile düşüm işlemi bakiyeyi eksiye geçirmez — sıfırda durur. Yani son anda başlayan bir arama seni “borçlu” bırakmaz.
Bunun tersi de geçerli: yeni bir arama başlatmak için bakiyende en az 1 dakika olması gerekir. Bakiye 0 ise ne outbound kampanya araması ne de gelen çağrı yanıtlaması başlamaz — sistem aramayı başlatmadan önce bakiyeyi kontrol eder.
Düşük bakiye uyarıları
Bakiyen belirli bir eşiğin (varsayılan 30 dakika) altına indiğinde Purvisor sana hem panel içi bildirim hem de e-posta ile haber verir: “Dakika bakiyeniz azalıyor” başlıklı bildirim, bakiye tükenirse aktif kampanyaların ve gelen çağrı yanıtlamanın duracağını hatırlatır.
Bu uyarı tekilleştirilmiş (dedup’lu) çalışır: aynı hesaba 72 saat içinde ikinci bir düşük bakiye uyarısı gönderilmez. Yani bakiyen düşükken art arda birkaç arama daha yaparsan, her arama sonrası ayrı bir uyarı e-postası almazsın — ilk uyarıdan sonraki 3 gün boyunca sessiz kalır, sonra bakiye hâlâ düşükse tekrar uyarır.
Sorun giderme
| Belirti | Açıklama |
|---|---|
| Kısa süren bir arama faturaya yansımadı | Beklenen davranış — 30 saniyenin altındaki aramalar hiç ücretlendirilmez. |
| Aynı aramanın iki kez düşürüldüğünü düşünüyorum | Düşüm idempotent’tir; bir callId için ikinci kayıt oluşmaz. Dakika işlemlerini faturalandırma geçmişinden kontrol et. |
| Bakiyem 0 görünüyor ama negatife düşmedi | Beklenen davranış — bakiye sıfırın altına inmez. |
| Düşük bakiye uyarısı gelmedi | Son 72 saat içinde zaten bir uyarı gönderilmiş olabilir (dedup); ayrıca e-posta klasörünü/spam’i kontrol et. |
| Kampanya araması hiç başlamadı | Bakiye 0 olabilir — arama başlamadan önce en az 1 dakikalık bakiye şartı aranır. Dakika yükle veya paket kontrolü yap. |
| Arama 30 saniyenin biraz üzerinde ama “başarısız” görünüyor | Süre hesaplaması aramanın oda içine alınmasından itibaren başlar; asistanın gerçek konuşma süresiyle birebir örtüşmeyebilir, birkaç saniyelik fark normaldir. |