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.

Webkancaları

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

  1. Hipcall kontrol panelinizde Hesap > Entegrasyonlar bölümüne gidin.
  2. Yeni Entegrasyon Oluştur’a tıklayın ve Webkanca’yı seçin.
  3. Webkancayı şu şekilde yapılandırın:
AlanDeğer
Hedef URLhttps://your-server.example.com/webhook/hipcall-cdr
OlaylarÇağrı Kapanışı (call_hangup)
YöntemPOST

Yerel geliştirme: Yerel sunucunuzu dışarıya açmak için ngrok kullanın. ngrok http 5007 komutunu ç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:

AlanAçıklama
uuidBenzersiz çağrı tanımlayıcısı — yinelemeyi önlemek için kullanın
caller_number / callee_numberÇağrıdaki taraflar
directioninbound (gelen) veya outbound (giden)
call_durationSaniye cinsinden süre
record_urlMP3 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

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.