Telefoni & AramalarGelen Aramalar (Inbound)

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ı inbound veya both olarak ayarlanmış olmalı. Sadece outbound olarak 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ı öneki call-) — 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:

AyarDavranış
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ı doluYazdığı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 = humanAsistan ö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

BelirtiOlası neden / çözüm
Numara hiç çalmıyorOperatö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ıyorYanlış asistan bağlanmış olabilir — Telefon Numaraları’ndan bağlı asistanı kontrol et.
Çağrı başında birkaç saniye sessizlikfirst_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üyorAramalar 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.

İlgili