Hipcall Geliştirici Bilgi Bankası / Örnek Senaryolar

Arayan Kişinin PIN ile Doğrulanması

Arayan kişiyi telefon numarası ve PIN ile doğrulayıp sonuca göre farklı dahili hatlara nasıl yönlendireceğinizi öğrenin.

Güncellendi October 13, 2026
Oku 4 dk
Bu sayfada

Genel Bakış

Bazı çağrılar yalnızca yönlendirmeden fazlasına ihtiyaç duyar — kimlik doğrulama gerektirir. Arayanın telefon numarası tek başına her zaman yeterli değildir: aynı SIM kart birden fazla kişi tarafından kullanılıyor olabilir ya da arayanın gerçekten iddia ettiği kişi olduğunu doğrulamanız gerekebilir.

Bu rehber, PIN tabanlı bir kimlik doğrulama IVR'ı oluşturmak için Harici Yönetim'i nasıl kullanacağınızı göstermektedir. Bir çağrı geldiğinde Hipcall, arayanı kişisel PIN'ini girmesi için yönlendirir. Sunucunuz bunu arayanın telefon numarasıyla karşılaştırır ve Hipcall'a çağrıyı nereye yönlendireceğini bildirir — başarı durumunda müşteri destek ekibine, PIN eşleşmezse satış ekibine.

Nasıl Çalışır

Hipcall, çağrının her adımını JSON dizisi olarak sunucunuza iletir. İlk istekte (henüz PIN girilmemiş) sunucunuz rakam toplamak için gather eylemiyle yanıt verir. İkinci istekte (PIN sağlanmış) sunucunuz doğrulama yapar ve play ile connect eylemleriyle yanıt verir.

Mimari

flowchart TD
    A[Arayan arar] --> B[Harici Yönetim sunucunuza POST gönderir]
    B --> C[Sunucu gather eylemini döndürür]
    C --> D[Arayan 1-4 haneli PIN girer]
    D --> E[Harici Yönetim PIN ile tekrar POST gönderir]
    E --> F{Telefon bulundu VE PIN dogru mu?}
    F -- Evet --> G[Basari sesi cal\n1091 dahiliye bagla]
    F -- Hayir --> H[Hata sesi cal\n1092 dahiliye bagla]

Adım 1: Hipcall'da Harici Yönetimi Yapılandırın

  1. Hipcall kontrol panelinizde Ayarlar > Geliştirici > Harici Yönetimler bölümüne gidin.
  2. Aşağıdaki ayarlarla yeni bir Harici Yönetim girişi oluşturun:
Alan Değer
Ad PIN Doğrulama
Hedef URL https://your-server.example.com/api/external/hipcall-ingress
  1. Bu Harici Yönetimi, Hipcall hesabınızdaki istenen IVR adımına veya çağrı akışına ekleyin.

Yerel geliştirme: Yerel sunucunuzu dışarıya açmak için ngrok kullanın. ngrok http 5000 komutunu çalıştırın ve oluşturulan URL'yi Hedef URL olarak kullanın.

Adım 2: İlk İsteği İşleyin

Bir çağrı Harici Yönetim uç noktanıza ilk kez ulaştığında, Hipcall arayanın telefon numarasını içeren ancak henüz PIN olmayan bir POST gönderir:

{
"caller": "+905060508169",
"data": {}
}

Arayana PIN'ini sorması için gather eylemiyle yanıt verin:

@app.route('/api/external/hipcall-ingress', methods=['POST'])
def hipcall_ingress():
data = request.json
caller = data.get('caller')
gather_data = data.get('data', {})
if 'pin_code' not in gather_data:
return jsonify({
"version": "1",
"seq": [
{
"action": "gather",
"args": {
"min_digits": 1,
"max_digits": 4,
"ask": "https://your-server.example.com/static/audio/pin_karsilama.mp3",
"variable_name": "pin_code"
}
}
]
})

ask alanı arayana oynatılan bir MP3 URL'sidir (örn. "Lütfen PIN'inizi girin."). Hipcall min_digits ile max_digits arasında tuş basışı toplar ve bunları variable_name altında saklar.

Adım 3: PIN'i Doğrulayın ve Çağrıyı Yönlendirin

Arayan PIN'ini girdikten sonra Hipcall, toplanan rakamlarla ikinci bir POST gönderir:

{
"caller": "+905060508169",
"data": {
"pin_code": "1234"
}
}

Arayanı veritabanınızda bulup PIN'leri karşılaştırın. Sorgulamadan önce telefon numarasını normalleştirin — Hipcall bunu ülke öneki ile gönderebilir:

def normalize_phone(phone):
if not phone:
return phone
phone = phone.strip()
if phone.startswith('+90'):
phone = phone[3:]
elif phone.startswith('90') and len(phone) == 12:
phone = phone[2:]
elif phone.startswith('0') and len(phone) == 11:
phone = phone[1:]
return phone

Ardından PIN'i doğrulayın ve uygun yönlendirmeyle yanıt verin:

# Adım 2'deki hipcall_ingress() fonksiyonunun devamı ...
normalized_caller = normalize_phone(caller)
user = db.execute(
'SELECT * FROM users WHERE phone = ?', (normalized_caller,)
).fetchone()
entered_pin = gather_data.get('pin_code')
if user and entered_pin == user['pin_code']:
return jsonify({
"version": "1",
"seq": [
{
"action": "play",
"args": {
"url": "https://your-server.example.com/static/audio/pin_basarili.mp3"
}
},
{
"action": "connect",
"args": {"destination": "1091"}
}
]
})
else:
return jsonify({
"version": "1",
"seq": [
{
"action": "play",
"args": {
"url": "https://your-server.example.com/static/audio/pin_basarisiz1.mp3"
}
},
{
"action": "connect",
"args": {"destination": "1092"}
}
]
})

Başarı durumunda: Hipcall başarı sesini oynatır ve arayanı 1091 dahili hattına (müşteri destek) bağlar.

Hata durumunda: Hipcall hata sesini oynatır ve arayanı 1092 dahili hattına (satış ekibi) bağlar; burada bir temsilci daha fazla yardımcı olabilir.

Adım 4: Hata Ayıklama için İstekleri Kaydedin

Geliştirme sürecinde, PIN doğrulamasını gerçek zamanlı olarak izleyebilmek için gelen her isteği ve giden her yanıtı kaydedin:

@app.after_request
def log_request_response(response):
if request.path == '/api/external/hipcall-ingress':
req_body = request.get_data(as_text=True)
res_body = response.get_data(as_text=True)
db.execute(
"INSERT INTO logs (method, path, request_body, response_body) VALUES (?, ?, ?, ?)",
(request.method, request.path, req_body, res_body)
)
db.commit()
return response

Kullanılan Araçlar

Araç Amaç
Harici Yönetim İki aşamalı IVR dizisini yönetir — PIN topla, ardından çağrıyı yönlendir

Sonraki Adımlar

Bu makale yardımcı oldu mu?

Hâlâ yardıma mı ihtiyacınız var?

Aradığınızı bulamıyor musunuz? Bize ulaşın, yardımcı olalım.