Skip to content

Webhooks ​

DOLU.ai olaylarini harici sistemlere bildirmek icin webhook'lar kullanin.

Genel Bakis ​

Webhook'lar, DOLU.ai'de bir olay gerceklestiginde belirlediginiz URL'ye HTTP POST istegi gonderir.

Webhook Olusturma ​

Arayuzden ​

  1. Ayarlar > Webhooks'a gidin
  2. Yeni Webhook butonuna tiklayin
  3. URL girin
  4. Olaylari secin
  5. Kaydedin

API ile ​

http
POST /api/v1/webhooks
json
{
  "url": "https://your-server.com/webhook",
  "events": [
    "message.received",
    "conversation.created",
    "contact.created"
  ],
  "secret": "your_webhook_secret"
}

Desteklenen Olaylar ​

Mesaj Olaylari ​

OlayAciklama
message.receivedYeni mesaj geldi
message.sentMesaj gonderildi
message.deliveredMesaj teslim edildi
message.readMesaj okundu
message.failedMesaj basarisiz

Konusma Olaylari ​

OlayAciklama
conversation.createdYeni konusma basladi
conversation.updatedKonusma guncellendi
conversation.assignedKonusma atandi
conversation.closedKonusma kapandi

Kisi Olaylari ​

OlayAciklama
contact.createdYeni kisi eklendi
contact.updatedKisi guncellendi
contact.deletedKisi silindi

Firsat Olaylari ​

OlayAciklama
deal.createdYeni firsat
deal.updatedFirsat guncellendi
deal.stage_changedAsama degisti
deal.wonKazanildi
deal.lostKaybedildi

Gorev Olaylari ​

OlayAciklama
task.createdYeni gorev
task.completedTamamlandi
task.overdueGecikti

Payload Formati ​

Genel Yapi ​

json
{
  "id": "evt_abc123xyz",
  "event": "message.received",
  "timestamp": "2024-01-21T10:30:00Z",
  "data": {
    ...
  }
}

Ornek: Mesaj Geldi ​

json
{
  "id": "evt_msg123",
  "event": "message.received",
  "timestamp": "2024-01-21T10:30:00Z",
  "data": {
    "messageId": "msg_abc123",
    "conversationId": "conv_xyz789",
    "contactId": "contact_456",
    "channel": "whatsapp",
    "text": "Merhaba, bilgi alabilir miyim?",
    "direction": "incoming",
    "sender": {
      "id": "contact_456",
      "name": "Ahmet Yilmaz",
      "phone": "+905551234567"
    }
  }
}

Ornek: Konusma Olusturuldu ​

json
{
  "id": "evt_conv123",
  "event": "conversation.created",
  "timestamp": "2024-01-21T10:30:00Z",
  "data": {
    "conversationId": "conv_xyz789",
    "contactId": "contact_456",
    "channel": "whatsapp",
    "source": "organic",
    "contact": {
      "id": "contact_456",
      "firstName": "Ahmet",
      "lastName": "Yilmaz",
      "phone": "+905551234567"
    }
  }
}

Guvenlik ​

Imza Dogrulama ​

Her webhook istegi X-Dolu-Signature header'i icerir:

X-Dolu-Signature: sha256=abc123def456...

Imza Kontrolu ​

javascript
const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');

  return signature === `sha256=${expectedSignature}`;
}

// Express middleware
app.post('/webhook', (req, res) => {
  const signature = req.headers['x-dolu-signature'];
  const payload = JSON.stringify(req.body);

  if (!verifySignature(payload, signature, WEBHOOK_SECRET)) {
    return res.status(401).send('Invalid signature');
  }

  // Process webhook
  console.log('Event:', req.body.event);
  res.status(200).send('OK');
});

Python Ornegi ​

python
import hmac
import hashlib

def verify_signature(payload, signature, secret):
    expected = hmac.new(
        secret.encode(),
        payload.encode(),
        hashlib.sha256
    ).hexdigest()
    return signature == f'sha256={expected}'

Yeniden Deneme ​

Basarisiz webhook'lar yeniden denenir:

DenemeBekleme
11 dakika
25 dakika
330 dakika
42 saat
524 saat

5 denemeden sonra webhook devre disi birakilir.

Basari Kriterleri ​

Webhook basarili sayilir eger:

  • HTTP 2xx yaniti alinirsa
  • Yanit 30 saniye icinde gelirse

Webhook Yonetimi ​

Listeleme ​

http
GET /api/v1/webhooks

Guncelleme ​

http
PUT /api/v1/webhooks/:id

Silme ​

http
DELETE /api/v1/webhooks/:id

Devre Disi Birakma ​

http
POST /api/v1/webhooks/:id/disable

Aktif Etme ​

http
POST /api/v1/webhooks/:id/enable

Test Etme ​

Test Istegi Gonderme ​

http
POST /api/v1/webhooks/:id/test
json
{
  "event": "message.received"
}

Webhook Loglari ​

http
GET /api/v1/webhooks/:id/logs

En Iyi Uygulamalar ​

  1. Hizli yanit verin: 5 saniye icinde 200 donun
  2. Asenkron isleyin: Agir isleri kuyruge alin
  3. Idempotent olun: Ayni olayı birden fazla kez isleyebilmelisiniz
  4. Imzayi dogrulayin: Guvenlik icin sart
  5. Loglayın: Gelen webhook'lari kaydedin
  6. Hata yonetimi: Hatalari yakalayin ve loglayın

DOLU.ai - AI Destekli CRM Platformu