Teknik ekipler ve entegrasyon ortakları

Kendi sisteminizdeki olayı müşterinin WhatsApp konuşmasına bağlayın.

Sendier API; OTP, sipariş, kargo, randevu, segment ve kampanya akışlarını resmi WhatsApp hattına taşır. Teknik detaylar hazır, ama önce işletmenin kazanacağı zamanı ve görünürlüğü netleştirir.

Canlı entegrasyon akışı

Sipariş bilgisi WhatsApp’a dönüşür

Adım 1

Sistemde olay oluşur

Sipariş, randevu, başvuru veya lead kaydı kendi sisteminizde tetiklenir.

Adım 2

Sendier API çağrılır

Şablon mesaj, kişi güncelleme veya kampanya tetikleme isteği idempotency ile alınır.

Adım 3

Müşteri WhatsApp’tan devam eder

Yanıt, teslim durumu ve temsilci ihtiyacı Sendier paneline geri düşer.

Müşteri mesajı

Siparişiniz hazır. Teslimat takibini bu WhatsApp konuşmasından görebilirsiniz.

Entegrasyonla ne kazanılır?

OTP ve sipariş mesajlarını WhatsApp'a taşıyın

Login, kargo, teslimat ve ödeme bildirimlerini onaylı şablonlarla kuyruğa alın.

CRM'den kişi ve segment güncelleyin

Satın alma, başvuru veya müşteri adayı kaydı geldiğinde Sendier kişisini aynı anda güncelleyin.

Kampanyayı kendi sisteminizden tetikleyin

ERP, e-ticaret veya belediye sistemi olay ürettiğinde onaylı kampanya akışını başlatın.

  • Müşteri mesajı işletme sistemindeki doğru kayıtla eşleşir.
  • Aynı bildirim internet kopması veya tekrar denemede iki kez gönderilmez.
  • Teslim, okundu ve yanıt bilgisi satış veya destek ekibine geri döner.

Kimlik doğrulama ve güvenli gönderim

API istekleri Bearer API anahtarıyla yetkilendirilir. Mesaj, kişi, segment ve kampanya işlemleri için ayrı yetki kapsamları kullanılır. Tekrar gönderimi önlemek için her yazma isteğinde benzersiz bir Idempotency-Key gönderin.

HTTP başlıkları
Authorization: Bearer sk_live_your_api_key_here
Idempotency-Key: 4f6209a0-7892-48bf-a02b-450f7d9a7ef1
Content-Type: application/json

API uç noktaları

Üstte işletme senaryosu, altta teknik sözleşme var. Bu uç noktalar mevcut public API yüzeyidir; URL ve yetki adları korunur.

POST
/api/v1/messages/otp
messages:send

Tek kullanımlık şifre şablonu gönderimi

POST
/api/v1/messages/template
messages:send

Onaylı WhatsApp şablon mesajı gönderimi

GET
/api/v1/messages/{id}
messages:send

Mesaj gönderim durum sorgulaması

POST
/api/v1/contacts
contacts:write

Telefon numarası ile kişi kaydı ve güncelleme

POST
/api/v1/segments/memberships
segments:write

Kişiye etiket veya segment ekleme-çıkarma

POST
/api/v1/campaigns/{id}/trigger
campaigns:trigger

Tanımlanmış kampanyayı dış sistemden tetikleme

GET
/api/v1/health
public

Sistem sağlık durumu kontrolü

Hata yönetimi ve tekrar koruması

Operasyonel mesajlarda aynı müşteriye iki kez OTP veya sipariş bildirimi gitmemesi gerekir. Idempotency, scope ve rate limit hatalarını uygulamanızda görünür ele alın.

INVALID_API_KEY401

API anahtarı eksik, hatalı veya geçerliliğini yitirmiş.

INSUFFICIENT_SCOPE403

API anahtarı bu işlem için gerekli yetkiye sahip değil.

IDEMPOTENCY_IN_FLIGHT409

Aynı Idempotency-Key ile devam eden başka bir istek var.

TEMPLATE_PARAM_MISMATCH422

Parametre sayısı onaylı şablondaki alanlarla uyuşmuyor.

RATE_LIMIT_EXCEEDED429

API anahtarı için dakikalık istek limiti aşıldı.

QUEUE_UNAVAILABLE503

Mesaj kuyruğu geçici olarak hizmet veremiyor.

Webhook ile sonucu geri alın

Teslim, okundu, yanıt ve hata olaylarını kendi CRM, ERP veya destek sisteminize geri yazabilirsiniz. Gelen istekleri imza doğrulamasıyla kontrol edin ve başarısız işlemler için tekrar deneme stratejisi kullanın.

İmza doğrulama örneği
const expected = 'sha256=' + crypto
  .createHmac('sha256', SENDIER_WEBHOOK_SECRET)
  .update(rawBody)
  .digest('hex');

Kod örnekleri

Örnekler satış demosundaki gerçek kullanım sırasını takip eder: mesaj gönder, kişiyi güncelle, segmenti değiştir.

cURL ile şablon mesaj göndermecURL
bash
curl -X POST https://sendier.com.tr/api/v1/messages/template \
  -H "Authorization: Bearer $SENDIER_API_KEY" \
  -H "Idempotency-Key: 4f6209a0-7892-48bf-a02b-450f7d9a7ef1" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+905551234567",
    "template_name": "siparis_bilgilendirme",
    "language": "tr",
    "parameters": ["Ada", "TR12345"],
    "metadata": { "order_id": "TR12345" }
  }'
Node.js ile kişi oluşturmaNode.js
javascript
const response = await fetch('https://sendier.com.tr/api/v1/contacts', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SENDIER_API_KEY}`,
    'Idempotency-Key': crypto.randomUUID(),
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    phone: '+905551234567',
    contact_data: { ad: 'Ada', source: 'checkout' },
    tags: ['vip', 'cart_abandoned']
  })
});

if (!response.ok) throw new Error(await response.text());
const payload = await response.json();
Laravel / PHP ile segment güncellemePHP
php
$response = Http::withToken(config('services.sendier.key'))
    ->withHeaders(['Idempotency-Key' => (string) Str::uuid()])
    ->post('https://sendier.com.tr/api/v1/segments/memberships', [
        'phone' => '+905551234567',
        'segment' => 'vip',
        'operation' => 'add',
    ]);

throw_if($response->failed(), RuntimeException::class, $response->body());