Geliştiriciler

Webhook olayları ve imza doğrulama

Gönderilen olaylar, gövde alanları, başlıklar, imza doğrulama ve yeniden denemeler.

Bu sayfada
  1. Olaylar
  2. İstek
  3. data alanları
  4. İmza doğrulama
  5. Yeniden denemeler

Webhook bağlantısı, seçtiğiniz olaylarda adresinize imzalı bir POST isteği gönderir. Kurulum: Ayarlar → Entegrasyonlar → Webhook (CRM) (bkz. Webhook makalesi).

Olaylar

Olay Ne zaman?
call.finalized (Görüşme sonuçlandı) Her görüşmenin sonucu kesinleştiğinde, bir kez. Test aramaları da gönderilir (is_test).
meeting.scheduled (Toplantı ayarlandı) Asistan bir görüşmede toplantı ayarladığında.
contact.dnc (Kişi aranmak istemiyor) Aranmayacaklar listesine yeni bir numara eklendiğinde.
action_rule.triggered (Otomasyon kuralı çalıştı) Kanalı "Webhook" olan bir otomasyon kuralı çalıştığında.
ping (Test) Test et'e bastığınızda.

İlk üç olayı webhook formundaki Gönderilecek olaylar listesinden seçersiniz. action_rule.triggered, otomasyon kurallarıyla gönderilir.

İstek

{
  "id": "5f0c…",
  "event": "call.finalized",
  "created_at": "2026-10-01T14:09:30+03:00",
  "data": { … }
}

Başlıklar: Content-Type: application/json, X-Arar-Event, X-Arar-Event-Id (gövdedeki id), X-Arar-Timestamp (Unix saniye) ve X-Arar-Signature.

data alanları

call.finalized

  • call: id, direction, is_test, status, outcome, outcome_label, interest_score, duration_seconds, answered_at, ended_at, callback_at, summary, notes, next_action
  • campaign: id, name
  • contact: id, first_name, last_name, company, email, phone, custom_fields

meeting.scheduled

  • meeting: id, call_id, starts_at, duration_minutes, timezone, meet_link, calendar_link, status, notes
  • campaign (veya null) ve contact (yukarıdaki gibi)

contact.dnc

  • phone, source (agent: görüşmede talep, manual: elle eklendi), reason, call_id, contact_ids

action_rule.triggered

  • call.finalized ile aynı alanlar ve rule: id, name

İmza doğrulama

X-Arar-Signature = v1= + HMAC-SHA256(imza anahtarınız, X-Arar-Timestamp + "." + ham gövde). İmzayı sabit zamanlı karşılaştırmayla doğrulayın ve 5 dakikadan eski istekleri reddedin.

İmza anahtarı (whsec_…) webhook'u ilk kaydettiğinizde bir kez gösterilir. Kaybettiyseniz kartta Anahtarı yenile'ye basın; eski anahtar hemen geçersiz olur.

Örnek (PHP):

$body = file_get_contents('php://input');
$timestamp = (int) $_SERVER['HTTP_X_ARAR_TIMESTAMP'];
$expected = 'v1=' . hash_hmac('sha256', $timestamp . '.' . $body, $secret);

if (! hash_equals($expected, $_SERVER['HTTP_X_ARAR_SIGNATURE'] ?? '') || abs(time() - $timestamp) > 300) {
    http_response_code(401);
    exit;
}

$event = json_decode($body, true); // ['id' => …, 'event' => 'call.finalized', 'data' => […]]

Yeniden denemeler

  • Adresiniz 2xx dönmelidir. İstek 10 saniyede zaman aşımına uğrar.
  • Bağlantı hatası, 408, 429 ve 5xx yanıtlarında istek artan aralıklarla (30 saniyeden 1 saate kadar) toplam 6 kez denenir. Diğer 4xx yanıtları yeniden denenmez.
  • Yeniden denemelerde aynı X-Arar-Event-Id gelir; tekrarları bu kimlikle ayıklayın.
  • Yönlendirmeler (3xx) izlenmez; adres https:// olmalı ve herkese açık bir sunucuya ait olmalıdır.