Gelen Aramalar (Inbound)
Purvisor sadece arama yapmaz — bağladığın numarayı arayan müşterileri de yapay zeka asistanın açabilir. Destek hattı, randevu hattı veya “bizi arayın” CTA’sı olan her işletme için bu, ek bir çağrı merkezi vardiyası kurmadan 7/24 karşılama demektir. Bu sayfa gelen çağrı altyapısının nasıl kurulduğunu, bir numaranın hangi asistana bağlandığını, karşılamanın nasıl tasarlandığını ve arka planda çağrıları güvence altına alan bir korumayı anlatıyor.
Gelen aramalar, Telefon Numarası (SIP) sayfasındaki temel SIP trunk kurulumunun üzerine eklenen bir katmandır. Önce bir numaran ve giden aramaların çalıştığı bir SIP trunk’ın olması gerekir.
Nasıl çalışır?
Müşteri senin numaranı arar
↓ (operatör SIP INVITE gönderir)
LiveKit SIP — Inbound Trunk (DID + operatör IP allowlist eşleşmesi)
↓
Dispatch Rule (individual) → çağrı için YENİ, tek bir oda açılır
↓
Purvisor agent'ı odaya otomatik bağlanır (otomatik dispatch, outbound'la aynı worker)
↓
Agent aranan numarayı (DID) okur → POST /api/agent/inbound-config
↓
Backend: DID → bağlı asistan bulunur → dakika bakiyesi kontrol edilir
→ arayan kişi eşleştirilir/oluşturulur → Call kaydı (direction: inbound)
↓
Asistan karşılama söyler → görüşme → çağrı sonrası analizÖn koşullar
- Çalışan bir SIP trunk ve en az bir aktif telefon numarası (Telefon Numarası (SIP)).
- Operatör tarafında (örn. Netgsm) o numaranın gelen çağrılarının SIP trunk’a yönlendirilmiş olması — santral seviyesinde değil, numaranın kendi ayarında.
- Bir asistan; oluştururken veya düzenlerken çağrı yönü (callDirection) alanı
inboundveyabotholarak ayarlanmış olmalı. Sadeceoutboundolarak işaretli asistanlar gelen çağrıyı açamaz. - Yeterli dakika bakiyesi — numaranın sahibi olan hesapta en az 1 dakika kalmış olmalı. Bakiye bunun altındaysa gelen çağrı hiç kabul edilmez (aşağıdaki “Bakiye kapısı” uyarısına bak).
Kurulum
Inbound trunk + dispatch rule’u oluştur
Bu, operatör tarafını LiveKit’e bağlayan bir kerelik (ve gerektiğinde tekrar çalıştırılabilir) altyapı adımıdır — destek ekibi veya kurulum sihirbazı senin için yapar. Arka planda:
- Bir SIP Inbound Trunk oluşturulur: hangi numaraların (DID) gelen çağrı kabul edeceği + operatörün sinyal IP’sinin izin listesi (
allowedAddresses). - Bir Dispatch Rule oluşturulur (
individual, oda adı önekicall-) — her gelen çağrı için ayrı, tek kullanımlık bir oda açar. - Purvisor agent’ı için özel bir “inbound agent” tanımlanmaz — worker zaten otomatik dispatch modunda çalıştığından, giden aramalarda kullandığı aynı mekanizmayla bu yeni odaya da otomatik bağlanır. Giden çağrı akışına dokunulmaz.
İşlem tamamlandığında dönen yanıt, operatöre (Netgsm) tanıtman gereken SIP URI’yi içerir — örn. xxxxxxxxx.sip.livekit.cloud:5060. Bu adres, LiveKit proje panelindeki WebSocket adresinden farklıdır; operatör origination ayarına mutlaka bu SIP URI’yi yazman gerekir.
Gelen çağrılar, operatör bu SIP URI’ye INVITE göndermeye başlamadan akmaz. Numarayı panelde bir asistana bağlasan bile operatör tarafında yönlendirme eksikse telefon hiç çalmaz.
Numarayı bir inbound asistana bağla
Telefon Numaraları sayfasında ilgili numarayı düzenle. Açılan formdaki Asistana Bağla (gelen çağrı) seçicisi yalnızca çağrı yönü inbound veya both olan asistanları listeler — bu sayede yanlışlıkla sadece-giden bir asistanı gelen çağrıya bağlayamazsın. Bağlantıyı kaldırmak için aynı seçicide **“Bağlı değil”**i seç.
📸 [Ekran görüntüsü: Telefon Numaraları — numara düzenle modalı, “Asistana Bağla (gelen çağrı)” seçici]
Bir numaraya tek bir asistan bağlanır. Birden çok hattın varsa (örn. satış hattı + destek hattı), her numarayı kendi asistanına ayrı ayrı bağlayabilirsin.
Karşılamayı tasarla
Asistan ayarlarında Karşılama Mesajı (greeting) ve İlk konuşan (first_speaker) alanları gelen çağrı deneyimini belirler:
| Ayar | Davranış |
|---|---|
| Karşılama mesajı boş | Asistan, zaman-duyarlı (günün saatine göre “günaydın/iyi günler/iyi akşamlar”) rastgele bir varsayılan gelen-çağrı karşılaması kullanır — örn. “İyi günler, hoş geldiniz! Size nasıl yardımcı olabilirim?” |
| Karşılama mesajı dolu | Yazdığın metin birebir kullanılır — marka adını, hattın amacını netleştirmek için burayı doldurman önerilir. |
| first_speaker = ai (varsayılan) | Asistan çağrı bağlanır bağlanmaz karşılamayı söyler. |
| first_speaker = human | Asistan önce dinler — müşteri konuşana kadar sessiz kalır. Müşteri 3 saniye içinde konuşmazsa (örn. sessizce bekliyorsa) asistan yine de karşılamayı söyler, böylece hat “ölü sessizlik”te kalmaz. |
Gelen çağrılarda arayanın kim olduğu genelde bilinmez (kayıtlı bir kontak eşleşmedikçe), bu yüzden karşılama kişiye özel değil, genel ve markanı tanıtan bir açılış olmalı: “[Firma adı]‘na hoş geldiniz, ben yapay zeka asistanınız…” gibi.
Arayan tanınmıyorsa Purvisor onu yine de kaydeder. Arayan numara Kontaklar’daki bir kişiyle eşleşirse (son 10 hane üzerinden) o kişinin geçmişi görüşmeye taşınır. Eşleşmezse yeni bir kişi kaydı açılır — adı henüz bilinmediği için geçici olarak “Arayan” yazar, kaynağı gelen arama olarak işaretlenir; asistan görüşme sırasında adı sorup kaydı günceller. Böylece görüşme bitince “kim aramıştı” bilgisi kaybolmaz ve randevu doğru kişiye bağlanır.
Test et
Bağladığın numarayı başka bir telefondan ara. Beklenen akış: birkaç saniye içinde asistan karşılamayı söyler; panelde Aramalar altında yeni bir çağrı inbound yönüyle görünür; çağrı bittiğinde normal çağrı sonrası analiz (özet, duygu durumu, aksiyonlar) üretilir.
Bakiye kapısı
Gelen bir çağrı geldiğinde backend, asistanı çözmeden hemen önce numaranın sahibi olan hesabın kalan dakikasına bakar. Bakiye 1 dakikanın altındaysa çağrı kabul edilmez: asistan hiç devreye girmez, oda temiz şekilde kapanır ve panelde hiç çağrı kaydı oluşmaz. Giden aramalarda olduğu gibi gelen aramalar da dakika cüzdanından düşer — hattın sürekli açık kalmasını istiyorsan bakiyeni sıfıra düşürme.
Bakiye kapıyı geçse bile görüşme süresi kalan bakiyenle sınırlıdır: bir gelen çağrının azami süresi, asistanın kendi süre limiti ile kalan dakikanın karşılığı (dakika × 60 saniye) arasından küçük olanıdır. Yani 2 dakikan kaldıysa asistanın limiti 10 dakika olsa bile görüşme 2 dakikada kesilir.
Aynı anda birden çok asistan konuşuyor gibi duyarsan
Nadiren, operatörün sinyal katmanı aynı çağrı için aynı INVITE’ı ikinci kez gönderebilir — genelde agent soğuk başlangıç yaptığı için ilk yanıt birkaç yüz milisaniye gecikince operatör “ulaşmadı” sanıp tekrar dener. Koruma olmasa bu, aynı oda için ikinci bir asistan oturumu başlatır ve iki sesin üst üste binmesine yol açar.
Purvisor bunu oda bazında engeller: bir çağrı odasına ilk bağlanan asistan o odayı anında “sahiplenir”; aynı odaya gelen herhangi bir tekrar/ikinci bağlanma denemesi bunu fark edip kendini kapatır — müşteri hattında sadece tek asistan kalır. Bu koruma her gelen çağrıda otomatik çalışır; senin tarafında ayarlanacak bir şey yok.
Bu koruma paylaşılan bir önbellek (Redis) üzerinden çalışır. Önbellek geçici olarak erişilemez olursa koruma açık kalmayı değil, çağrıyı engellememeyi tercih eder (fail-open) — yani nadir bir alt-alta binme riski, tüm gelen çağrıların durmasından daha güvenli kabul edilir.
KVKK notu
Gelen çağrılarda karşılama, “sizinle yapay zeka asistanı görüşüyor” bilgisini net vermeli — arayan kişi bunu talep etmiş olsa da (numaranı kendi seçimiyle aradığı için), aydınlatma yükümlülüğü devam eder. Kayıt alınıyorsa (record_calls açıksa) bunu da karşılamada veya kısa bir bilgilendirme cümlesiyle belirt.
Sorun giderme
| Belirti | Olası neden / çözüm |
|---|---|
| Numara hiç çalmıyor | Operatör tarafında o numaranın gelen çağrı yönlendirmesi SIP trunk’a/LiveKit SIP URI’sine kurulmamış — santral seviyesinde değil numaranın kendi ayarında kontrol et. |
| Çağrı geliyor ama kimse açmıyor | Üç olasılık: (1) numara panelde hiçbir asistana bağlanmamış; (2) bağlı asistanın çağrı yönü outbound (inbound/both değil); (3) hesabın dakika bakiyesi 1 dakikanın altında — bu durumda çağrı reddedilir ve panelde hiç çağrı kaydı görünmez, bakiye yüklediğinde kendiliğinden düzelir. |
| Aynı numara birden fazla hesapta kayıtlı | Aranan numara (DID) farklı Purvisor hesaplarına kayıtlıysa backend tahmin etmez, çağrıyı reddeder — yanlış kiracıya kayıt/faturalandırma yapmamak için. Numara sana aitse destekle iletişime geç. |
| ”No phone number bound to this DID” / benzer sessiz geçiş | Aranan numara (DID) sistemde aktif ve doğru formatta kayıtlı değil — numaranın aktif (is_active) olduğunu ve operatörün gönderdiği formatın (bazı operatörler +90 önekini atlar) eşleştiğini doğrula. |
| Asistan yanlış konuda karşılıyor | Yanlış asistan bağlanmış olabilir — Telefon Numaraları’ndan bağlı asistanı kontrol et. |
| Çağrı başında birkaç saniye sessizlik | first_speaker = human ayarlıysa beklenen davranıştır (3 saniyeye kadar); daha uzun sürüyorsa asistan ayarını ai yap. |
| Panelde çağrı kaydı görünmüyor | Aramalar sekmesini kontrol et — kayıt gecikmeli görünüyorsa birkaç saniye bekle; hiç görünmüyorsa numaranın bağlı olduğu asistanı ve operatör yönlendirmesini doğrula. |