Entegrasyon Kullanım Senaryosu
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.
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
- Hipcall kontrol panelinizde Ayarlar > Geliştirici > Harici Yönetimler bölümüne gidin.
- 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 |
- 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 5000komutunu ç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
- Harici Yönetim dokümantasyonu — Tam eylem dizisi referansını öğrenin (
gather,play,connect,hangup) - Webkancaları dokümantasyonu — Kimlik doğrulama girişimlerini denetlemek için
call_hangupolaylarıyla birleştirin - REST API kimlik doğrulaması — Uç noktanızı Temel Kimlik Doğrulama veya API anahtarı doğrulamasıyla güvence altına alın
Topluluktan Sor
Sorularınız mı var ya da entegrasyonunuzu paylaşmak mı istiyorsunuz? Tartışmaya katılın.
Araçlar ve API'ler
Hipcall'ı sistemlerinize genişletmek ve entegre etmek için altı yol.
REST API
Hipcall verilerinize programlı olarak erişin. OAuth 2.0 ve API anahtarı doğrulaması ile RESTful HTTP API üzerinden dahililer yönetin, aramalar başlatın, arama kayıtlarını alın ve daha fazlasını yapın.
Webhook'lar
13'ten fazla etkinlik türü için gerçek zamanlı HTTP bildirimleri alın — gelen aramalar, yanıtlanan aramalar, kapatmalar, sesli mesajlar ve daha fazlası. Arama verilerini anında herhangi bir sisteme iletin.
Web Servis Tabanlı Akıllı Yönlendirmeler
Kendi iş mantığınızı kullanarak gelen aramaları dinamik olarak yönlendirin. Hipcall, çalma anında web servisinizi çağırır ve aramayi JSON yanıtınıza göre yönlendirir.
Hızlı Arama
Giden aramaları programlı olarak tetikleyin. Tek bir API isteğiyle bir temsilcinin dahilisinden herhangi bir numaraya arama başlatın — tıkla-ara entegrasyonları için idealdir.
Harici Yönetim
Hipcall hesabınızı harici sistemlerden yönetin. Panele giriş yapmadan kullanıcıları sağlayın, arama akışlarını güncelleyin ve ayarları kontrol edin.
Bilgilendirme Kartı
Bir arama bağlandığı anda temsilcinin ekranında gerçek zamanlı arayan bağlamını görüntüleyin. CRM'inizden veya ERP'nizden API aracılığıyla herhangi bir veriyi — ad, şirket, hesap bakiyesi — iletin.