Skip to main content

Mesaj Gönderme ve Alma

Bu rehber sizi bir API anahtarından çalışan iki yönlü bir mesaj akışına götürür: giden bir mesaj gönderin, teslim durumunu izleyin ve yanıtı kendi sunucunuzda alın. Örnek olarak SMS kullanılır — aynı üç adımlı desen (gönder → izle → al) WhatsApp, RCS, Viber ve E-posta için de geçerlidir; her biri kendi uç noktasında çalışır. Yapacaklarınız:
  1. Mesaj gönderin
  2. Teslim durumunu izleyin
  3. Gelen mesajları alın
  4. Gelen bir mesaja yanıt verin

Ön koşullar

  • Ayarlar → API Anahtarları altından bir API anahtarı. İnşa ederken bir sandbox anahtarı (dv_test_sk_…) kullanın — sandbox gönderimleri ücretsiz ve simüledir; hem başarı hem de hata yollarını denemeniz için belirli (deterministik) teslim fişleri döndürür. Üretime geçerken canlı bir anahtar (dv_live_sk_…) kullanırsınız.
  • Kullandığınız kanaldan gönderim yapabilen bir gönderici numarası. SMS için bu, sahibi olduğunuz SMS uyumlu bir numaradır (Numbers API veya Dashboard → Numbers üzerinden arayıp satın alabilirsiniz). from alanını boş bırakırsanız Orbit hedef için uygun bir gönderici seçer.
  • Alma adımı için herkese açık bir HTTPS URL. Geliştirme sırasında herhangi bir tünl aracı (tunneling tool) iş görür.
Tüm istekler tek bir base URL’ye gider — sandbox aynı host’tur; domain değil, anahtarınızla seçilir:
Her istek, anahtarınızı X-API-Key başlığında taşıyor olur.

1. Mesaj gönderin

POST /messages/sms ile bir SMS gönderin. Yalnızca to ve body zorunludur; from isteğe bağlıdır.
Yanıt 202 Accepted’dır — mesaj kalıcı olarak kaydedilir ve teslim için kuyruğa alınır; henüz operatöre teslim edilmemiştir. Alanlar data altında yaşar; meta, destek için loglamanız gereken request_id’yi taşır.
id (msg_ ve ardından 32 onaltılı karakter) takip eden tüm çağrılar için tutamaçtır — durum sorguları, teslim webhook’ları ve mesaj izleme hep bu anahtarla çalışır. Sandbox yanıtları meta’ya "test_mode": true ekler.
Gönderimlerde her zaman bir Idempotency-Key gönderin. Aynı anahtarı ve gövdeyi 24 saat içinde tekrarlarsanız, kopya gönderim yerine özgün yanıt döner; farklı bir gövdeyle tekrarlamak 409 IDEMPOTENCY_KEY_REUSED döndürür.

Diğer kanallar

Her kanalın, o kanala uyan bir gövde biçimiyle /messages öneki altında kendi uç noktası vardır. Tek bir kanal-çokbiçimli (polymorphic) rota yoktur — kanalınıza uyan uç noktayı seçin:

2. Teslim durumunu izleyin

Kuyruktaki bir mesaj, alıcıya ulaşmadan önce bir durum yaşam döngüsü boyunca ilerler:
İzlemenin iki yolu vardır: Mesajı id ile sorgulayın:
Webhook’lara abone olun (önerilir — sorgulama yok). Her durum geçişinde bir olay ateşlenir ve her biri mesaj id’si ile yeni status’u taşır:
  • message.sent — operatör tarafından kabul edildi
  • message.delivered — telefona teslim edildiği onaylandı
  • message.failed — kesin hata (payload status’u failed, undelivered, expired ve submitted_no_receipt’i ayırt eder; varsa error_code / error_message sağlayıcı nedenini taşır)
Bir webhook uç noktası bir kez kaydedilir, ardından olaylar akar:
Bir teslim olayı şöyle görünür:
Herhangi bir payload’u kabul etmeden önce X-Orbit-Signature başlığını doğrulayın ve olay id’sine göre tekrarları ayıklayın — teslim en az bir kez (at-least-once) yapılır. Doğrulama kod parçası için Webhook güvenliği bölümüne bakın.

3. Gelen mesajları alın

Biri numaranıza yanıt verdiğinde (veya önce ona mesaj attığında), Orbit bir gelen mesaj kaydeder ve — yukarıdaki adımda message.received aboneliğiniz varsa — bunu webhook URL’nize POST eder:
Gelen mesaj ayrıca sorgulanabilir — direction=inbound filtresiyle aldığınız her şeyi listeleyin:
Gelen yönlendirme, Orbit’te sahibi olduğunuz numaralar için otomatiktir — gönderici numaralarınızın birine yapılan bir yanıt yakalanır ve bir message.received aboneliğiyle webhook’unuza teslim edilir. Numara başına gelen URL kablolamak gerekmez.

4. Gelen bir mesaja yanıt verin

Yanıt vermek, gelen from adresine geri çekilmiş bir başka gönderimdir. to ile from’u değiştirin ve POST /messages/sms’i yeniden çağırın:
Her iki mesaj da bir konuşma paylaşır; iş parçacığı (thread) oluştuğunda, tam karşılıklı sohbet’i GET /messages üzerindeki conversation_id filtresiyle çekebilirsiniz.

Sık görülen hatalar

Her hata aynı biçimi kullanır — error.code’u (BÜYÜK HARF sabiti) eşleştirin ve meta.request_id’yi loglayın: Tam liste: Hata Kodları.

Sonraki adımlar