İster bir klinik için randevu onayları, ister bir tamirhane için sipariş güncellemeleri gönderiyor olun, işletmeniz için gerçek zamanlı bildirimler kurmak, teslimat durumunu takip etmenin güvenilir bir yolunu gerektirir. Callback URL'nizi ayarladıktan sonra, sisteminizin teslimat raporlarını ve gelen mesajları kusursuz bir şekilde işlediğinden emin olmak için webhook yapılandırıldıktan sonra SMS testinin nasıl yapılacağını bilmek kritik bir sonraki adımdır.

Adım 1: Yerel Bir Webhook Dinleyicisi Kurun

Sisteminizin SMS teslimat raporlarını nasıl işlediğini test etmeden önce, SMS ağ geçidinden (gateway) HTTP POST isteklerini alabilecek genel (public) bir URL'ye ihtiyacınız vardır. Yerel olarak geliştirme yapıyorsanız, localhost:3000 üzerinde çalışan sunucunuza açık internetten erişilemez. Bu boşluğu doldurmak için ngrok, LocalTunnel gibi yerel tünelleme araçlarını veya Webhook.site gibi çevrimiçi webhook test araçlarını kullanabilirsiniz.

Hızlı ve yapılandırma gerektirmeyen bir test için Webhook.site şiddetle tavsiye edilir. Gelen veri paketlerini (payload) gerçek zamanlı olarak izleyebileceğiniz benzersiz, geçici bir genel URL oluşturur. Doğrudan yerel uygulamanız üzerinde test yapmayı tercih ederseniz, yerel portunuzu dış dünyaya açmak için ngrok'u çalıştırın:

ngrok http 3000

Bu komut, genel bir HTTPS yönlendirme URL'si oluşturacaktır (örneğin, https://your-subdomain.ngrok-free.app). Webhook rotanızı bu URL'nin sonuna ekleyeceksiniz — örneğin, https://your-subdomain.ngrok-free.app/webhooks/sms — ve bunu webhook uç noktanız (endpoint) olarak kullanacaksınız.

Basit Bir Express.js Webhook Alıcısı Yazma

Veri paketini kendi backend'inizde günlüğe kaydetmek ve incelemek istiyorsanız, hızlı bir uç nokta oluşturmak için işte basit bir Node.js ve Express kod parçası:

const express = require('express');
const app = express();
app.use(express.json());

app.post('/webhooks/sms', (req, res) => {
  console.log('Alınan Webhook Verisi:', JSON.stringify(req.body, null, 2));
  // Alındığını onaylamak için her zaman hızlıca 200 OK durumu döndürün
  res.status(200).send({ status: 'success' });
});

app.listen(3000, () => console.log('Webhook alıcısı 3000 portunda dinleniyor'));

Adım 2: Webhook URL'sini SMS Ağ Geçidinizde Yapılandırın

Genel webhook URL'nizi aldıktan sonra, bunu SMS ağ geçidi panelinize kaydetmeniz gerekir. Test mesajı göndermeden önce bile karmaşık A2P 10DLC kaydı, işletme profili doğrulaması ve kampanya onayları gerektiren Twilio veya Vonage gibi eski sağlayıcıların aksine, MySMSGate kendi Android telefonunuzu basit bir QR kod aracılığıyla bağlamanıza ve anında test etmeye başlamanıza olanak tanır.

MySMSGate'de webhook'unuzu yapılandırmak için:

  1. MySMSGate panelinizde oturum açın.
  2. API ayarlarınıza veya Geliştirici Entegrasyon paneline gidin.
  3. Webhook URL'nizi (örneğin, Webhook.site URL'niz veya ngrok yönlendirme URL'niz) "Webhook URL" alanına yapıştırın.
  4. Abone olmak istediğiniz olayları seçin (örneğin, sms.sent, sms.delivered, sms.failed veya sms.received).
  5. Ayarlarınızı kaydedin.

Bu yapılandırma, fiziksel Android SIM kartlarınız ile backend uygulamanız arasındaki köprüyü kurarak, herhangi bir SMS durum değişikliğinin veya gelen kısa mesajın anında sunucunuza iletilmesini sağlar.

Adım 3: Webhook Teslimatını Doğrulamak İçin Test SMS'i Tetikleyin

Webhook'unuzu test etmenin en güvenilir yolu, gerçek bir SMS mesajı tetiklemektir. MySMSGate ile sanal numaralar satın almanıza veya bir sandbox (test alanı) ortamı kurmanıza gerek yoktur. Platform Android telefonunuzu bir SMS ağ geçidine dönüştürdüğü için, test amacıyla kendi SIM kartınız üzerinden kendi cep telefonu numaranıza gerçek mesajlar gönderirsiniz.

Web panelindeki Web Konuşmaları arayüzünü kullanarak veya basit REST API'miz aracılığıyla programlı olarak bir test SMS'i tetikleyebilirsiniz. İşte bir test mesajı tetiklemek için curl örneği:

curl -X POST https://mysmsgate.net/api/v1/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+905XXXXXXXXX",
    "message": "MySMSGate üzerinden webhook test mesajı",
    "sim_slot": 1
  }'

Bu isteği çalıştırdıktan sonra, bağlı Android telefonunuz mesajı SIM kartı üzerinden anında gönderecektir. Mesaj "beklemede" durumundan "gönderildi" ve son olarak "iletildi" durumuna geçerken, MySMSGate yapılandırılmış webhook URL'nize HTTP POST istekleri gönderecektir.

Adım 4: Teslimat Durumu Veri Paketini İnceleyin

Test SMS'ini tetikledikten sonra, webhook dinleyicinizi (Webhook.site veya ngrok çalışan yerel terminaliniz gibi) kontrol edin. Gelen bir HTTP POST isteği görmelisiniz. Bu veri paketini incelemek, webhook yapılandırıldıktan sonra SMS testinin nasıl yapılacağını öğrenmenin kritik bir parçasıdır.

MySMSGate'den gelen tipik bir teslimat durumu webhook veri paketi şuna benzer:

{
  "event": "sms.status_changed",
  "message_id": "msg_8f7d6e5c4b3a",
  "to": "+905XXXXXXXXX",
  "status": "delivered",
  "sim_slot": 1,
  "device_id": "dev_android_01",
  "timestamp": "2026-08-05T14:32:01.000Z",
  "error_code": null
}

Bu veriyi analiz ederken şu alanları doğrulayın:

  • message_id: İlk API çağrısı tarafından döndürülen ID ile eşleşiyor mu?
  • status: Mesajın başarıyla gönderildiğini veya iletildiğini onaylıyor mu?
  • sim_slot: Hangi SIM kartın kullanıldığını tanımlıyor mu (özellikle çift SIM'li Android telefonlar için yararlıdır)?
  • error_code: Durum "failed" ise, bu alan nedeni içerecektir (örneğin, operatör sinyali yok, bakiye yetersiz).

Adım 5: Webhook Uç Durumlarını ve Yeniden Denemeleri Test Edin

Sağlam bir üretim uygulaması, yalnızca başarılı teslimatlardan fazlasını işlemelidir. İşler ters gittiğinde sisteminizin nasıl davrandığını doğrulamanız gerekir. Webhook entegrasyonunuzu test ederken, şu üç uç durumu simüle ettiğinizden ve ele aldığınızdan emin olun:

  1. Teslimat Hatasını Simüle Edin: Geçersiz veya kapalı bir telefon numarasına SMS gönderin. Webhook veri paketini gözlemleyin. status alanı failed olarak güncellenmeli ve bir error_code doldurulmalıdır. MySMSGate'de, başarısız olan her SMS otomatik olarak hesap bakiyenize iade edilir; bunu panelinizden doğrulayabilirsiniz.
  2. Sunucu Kesintisini Simüle Edin: Yerel webhook alıcı sunucunuzu geçici olarak kapatın ve bir SMS tetikleyin. İyi bir SMS ağ geçidi, teslimat raporlarını kuyruğa alacak ve sunucunuz 5xx hatası döndürürse veya zaman aşımına uğrarsa bunları yeniden göndermeyi deneyecektir. Sunucunuzu tekrar çevrimiçi yaptığınızda ağ geçidinin webhook teslimatını yeniden denediğini doğrulayın.
  3. Mükerrer Webhook'ları Yönetin: Nadir ağ senaryolarında, sunucunuz aynı webhook olayını iki kez alabilir. Backend kodunuzun idempotent (aynı işlemin tekrarının sonucu değiştirmemesi) olduğundan emin olun — yani herhangi bir iş mantığını (takip e-postası göndermek veya müşteri kaydını güncellemek gibi) çalıştırmadan önce veritabanınızda message_id durumunun zaten güncellenip güncellenmediğini kontrol edin.

SMS Ağ Geçidi Webhook Test Ortamlarının Karşılaştırılması

Webhook testi, seçtiğiniz SMS API sağlayıcısına bağlı olarak büyük ölçüde değişebilir. Eski bulut iletişim platformları genellikle karmaşık uyumluluk kuralları ve sandbox'lar aracılığıyla sürtünme yaratırken, modern Android tabanlı SMS ağ geçitleri geliştirici deneyimini kolaylaştırır.

Aşağıda, farklı platformlar arasında webhook testi ve SMS teslimat yönetimi karşılaştırması yer almaktadır:

Özellik / ParametreMySMSGateTwilio / PlivoEski SMS Ağ Geçitleri
Kurulum Süresi< 5 dakika (QR kod tarama)Günler veya haftalar (A2P 10DLC onayları)Saatler (karmaşık API anahtarları)
Test OrtamıGerçek Android cihaz ve SIM kartKısıtlı Sandbox veya ücretli sanal numaralarYalnızca simüle edilmiş sandbox
Fiyatlandırma YapısıSabit $0.02/SMS (aylık ücret yok)Segment başına ücret + operatör ücretleri + aylık numara kirasıAylık abonelik (örneğin, $9.99/ay)
Başarısız SMS PolitikasıHatada otomatik bakiye iadesiTeslimat başarısız olsa bile tam ücret alınırDeğişken (genellikle yine de ücretlendirilir)
Kodsuz (No-Code) EntegrasyonlarZapier, Make.com, n8n, Web PanelÖzel kod veya karmaşık ara yazılım gerektirirSınırlı entegrasyonlar

Android telefonunuzu SMS ağ geçidi olarak kullanarak, yalnızca webhook'larınızı test etmek için pahalı özel kısa kodlar veya sanal numaralar satın alma ihtiyacını ortadan kaldırırsınız. Bu, MySMSGate'i kurumsal sözleşmelerin yükü olmadan basit, güvenilir bildirimler isteyen küçük işletme sahipleri için en ucuz SMS API seçeneği haline getirir.

Sıkça Sorulan Sorular

Aşağıda, geliştiricilerin ve işletme sahiplerinin SMS webhook'larını kurarken ve test ederken sordukları en yaygın sorulardan bazıları yer almaktadır.

Webhook uç noktamın SMS teslimat durumlarını alıp almadığını nasıl doğrularım?

Bunu sunucu günlüklerinizi kontrol ederek veya Webhook.site gibi bir araç kullanarak doğrulayabilirsiniz. Bir SMS gönderildiğinde, ağ geçidi URL'nize bir HTTP POST isteği gönderir. Sunucu günlükleriniz 200 OK yanıt koduyla gelen bir POST isteği gösteriyorsa, uç noktanız teslimat durumlarını başarıyla alıyor demektir.

Webhook'ları yerel olarak test etmek için hangi araçları kullanmalıyım?

Yerel webhook testi için en iyi araçlar ngrok (yerel sunucunuzu güvenli bir tünel üzerinden internete açmak için) ve Webhook.site'dır (herhangi bir kod yazmadan ham JSON verilerini hızlıca incelemek için). Her iki araç da ücretsizdir ve geliştiriciler tarafından yaygın olarak kullanılır.

SMS webhook'um test sırasında neden 500 hatası döndürüyor?

500 Dahili Sunucu Hatası, webhook alıcı kodunuzun gelen veriyi işlerken çöktüğü veya bir hatayla karşılaştığı anlamına gelir. Hata izini (stack trace) bulmak için backend sunucu günlüklerinizi kontrol edin. Kodunuzun JSON gövdesini düzgün bir şekilde ayrıştırdığından ve uzun süreli veritabanı işlemlerini gerçekleştirmeden önce hızlıca 200 OK yanıtı döndürdüğünden emin olun.

Sunucum çevrimdışı olursa MySMSGate webhook yeniden denemelerini nasıl yönetir?

Sunucunuz çevrimdışıysa veya bir hata durumu (500 veya 503 gibi) döndürürse, MySMSGate'in webhook teslimat sistemi bildirimi otomatik olarak kuyruğa alacak ve artan aralıklarla yeniden göndermeyi deneyecektir. Bu, kısa süreli sunucu güncellemeleri sırasında kritik teslimat raporlarını veya gelen müşteri yanıtlarını asla kaybetmemenizi sağlar.