Entegrasyon Kullanım Senaryosu
Çağrı Detaylarını ve Ses Kayıtlarını Webkancalarla Kendi Sisteminize Aktarın
Çağrı sona erer ermez detay kaydını veritabanınıza ekleyip ses dosyasını otomatik olarak nasıl indireceğinizi öğrenin.
Genel Bakış
Hipcall, çağrı detay kayıtlarını kontrol paneli ve REST API üzerinden erişilebilir kılar; ancak pek çok ekip bu verileri kendi sistemlerine — bir veri ambarına, uyumluluk arşivine, CRM’e veya özel analitik paneline — aktarmak ister. Bunu çağrı biter bitmez gerçek zamanlı yapmak için call_hangup webkancası tam olarak tasarlanmıştır.
Bu rehber, call_hangup olayını nasıl alacağınızı, çağrı kaydını kendi veritabanınızda nasıl saklayacağınızı ve imzalı URL süresi dolmadan ses dosyasını otomatik olarak nasıl indireceğinizi gösterir.
Nasıl Çalışır
Bir çağrı sona erdiğinde Hipcall, uç noktanıza bir call_hangup webkancası gönderir. Sunucunuz yükü çözümler, çağrı kaydını veritabanına ekler ve — bir kayıt URL’si mevcutsa — ses dosyasını arka planda indirir.
Mimari
flowchart TD
A[Çağrı sona erer] --> B[Hipcall call_hangup webkancası gönderir]
B --> C[Sunucunuz yükü alır]
C --> D[CDR'ı veritabanına kaydet]
D --> E{record_url\nmevcut mu?}
E -- Evet --> F[Arka planda ses dosyasını indir]
E -- Hayır --> G[Tamamlandı]
F --> H[MP3'ü yerel olarak kaydet\nkayıt yolunu güncelle]
Adım 1: Hipcall’da Webkancayı Oluşturun
- Hipcall kontrol panelinizde Hesap > Entegrasyonlar bölümüne gidin.
- Yeni Entegrasyon Oluştur’a tıklayın ve Webkanca’yı seçin.
- Webkancayı şu şekilde yapılandırın:
| Alan | Değer |
|---|---|
| Hedef URL | https://your-server.example.com/webhook/hipcall-cdr |
| Olaylar | Çağrı Kapanışı (call_hangup) |
| Yöntem | POST |
Yerel geliştirme: Yerel sunucunuzu dışarıya açmak için ngrok kullanın.
ngrok http 5007komutunu çalıştırın ve oluşturulan URL’yi hedef olarak kullanın.
Adım 2: Webkancayı Alın
Hipcall, her çağrı sona erdiğinde uç noktanıza şu yapıda bir JSON yükü gönderir:
{
"event": "call_hangup",
"data": {
"uuid": "call_abc123",
"caller_number": "+442045205757",
"callee_number": "+441234567890",
"direction": "inbound",
"call_duration": 45,
"started_at": "2026-04-02T10:00:00Z",
"ended_at": "2026-04-02T10:00:45Z",
"record_url": "https://storage.example.com/recordings/call_abc123.mp3?token=...",
"hangup_by": "callee"
}
}
Temel alanlar:
| Alan | Açıklama |
|---|---|
uuid | Benzersiz çağrı tanımlayıcısı — yinelemeyi önlemek için kullanın |
caller_number / callee_number | Çağrıdaki taraflar |
direction | inbound (gelen) veya outbound (giden) |
call_duration | Saniye cinsinden süre |
record_url | MP3 ses dosyasına önceden imzalanmış URL — kısa süre içinde geçersiz olur |
hangup_by | Çağrıyı kim kapattı: caller, callee veya system |
HTTP 200 yanıtını hızlıca gönderin — ağır işlemleri arka plana alın.
Adım 3: CDR’ı Saklayın
Her zaman event === "call_hangup" kontrolü yapın — uç noktanız gelecekte başka olaylar da alabilir. Webkanca yeniden denenmesi durumunda yinelenen kayıtları önlemek için uuid’yi birincil anahtar olarak kullanın.
@app.route('/webhook/hipcall-cdr', methods=['POST'])
def receive_cdr():
payload = request.json
if payload.get('event') != 'call_hangup':
return jsonify({"status": "ignored"}), 200
data = payload.get('data', {})
uuid = data.get('uuid')
# Yineleme kontrolü — Hipcall zaman aşımında yeniden deneyebilir
if db.execute('SELECT 1 FROM cdrs WHERE uuid = ?', (uuid,)).fetchone():
return jsonify({"status": "exists"}), 200
db.execute('''
INSERT INTO cdrs
(uuid, caller_number, callee_number, direction,
duration, started_at, ended_at, record_url, hangup_by)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
''', (
uuid,
data.get('caller_number'), data.get('callee_number'),
data.get('direction'), data.get('call_duration'),
data.get('started_at'), data.get('ended_at'),
data.get('record_url'), data.get('hangup_by'),
))
db.commit()
return jsonify({"status": "success"}), 201
Adım 4: Ses Dosyasını İndirin
record_url önceden imzalanmış bir URL’dir — çağrı bittikten kısa süre sonra geçerliliğini yitirir. Webkanca uç noktanız anında yanıt verebilmesi için dosyayı arka plan iş parçacığında indirin.
İndirmeden önce birkaç saniye bekleyin: ses dosyası kapanıştan hemen sonra depolamaya yüklenir ve kısa bir gecikme dosyanın hazır olmasını garanti eder.
def download_recording(record_url, uuid):
time.sleep(10) # Dosyanın depoda hazır olmasını bekle
response = requests.get(record_url, stream=True, timeout=30)
if response.status_code == 200:
path = f"./data/records/{uuid}.mp3"
with open(path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
db.execute(
'UPDATE cdrs SET local_record_path = ? WHERE uuid = ?',
(f"/api/records/{uuid}.mp3", uuid)
)
db.commit()
# Webkanca işleyicisinde CDR eklendikten sonra tetikle
record_url = data.get('record_url')
if record_url:
threading.Thread(
target=download_recording,
args=(record_url, uuid),
daemon=True
).start()
Kullanılan Araçlar
| Araç | Amaç |
|---|---|
| Webkancaları | Çağrı sona erdiğinde call_hangup olayını alır |
Sonraki Adımlar
- Webkancaları dokümantasyonu — Olaylara abone olun, yeniden deneme mantığını yapılandırın, imzaları doğrulayın
- REST API kimlik doğrulaması — Uç noktanızı API anahtarları veya Temel Kimlik Doğrulama ile güvence altına alın
- REST API — CDR uç noktaları — REST API üzerinden geçmiş çağrı kayıtlarını isteğe bağlı olarak çekin
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.