Eğitim Portalı/Spring Boot/Spring Boot ile Twilio (SMS / İletişim)
Spring Boot03-spring-boot/43-twilio

Spring Boot ile Twilio (SMS / İletişim)

> ⚠️ Bu konuda çalıştırılabilir örnek yoktur. Twilio SDK + bir Twilio hesabı (API anahtarı) > gerektirir; portalda çalışmaz. Kod tanıtım amaçlıdır.

Spring Boot ile Twilio (SMS / İletişim)

⚠️ Bu konuda çalıştırılabilir örnek yoktur. Twilio SDK + bir Twilio hesabı (API anahtarı) gerektirir; portalda çalışmaz. Kod tanıtım amaçlıdır.

Uygulamalar e-posta dışında SMS, WhatsApp veya sesli arama da göndermek isteyebilir: doğrulama kodu (OTP), sipariş bildirimi, iki adımlı kimlik (2FA), uyarılar. Twilio, bu iletişim kanallarını basit bir API ile sunan popüler bir bulut iletişim platformudur. Spring Boot'tan Twilio'nun Java SDK'sıyla kolayca kullanılır.

Kurulum ve yapılandırma

implementation 'com.twilio.sdk:twilio:10.x.x'
twilio:
  account-sid: ${TWILIO_SID}        # Twilio panosundan (sır -> ortam değişkeni!)
  auth-token: ${TWILIO_TOKEN}
  from-number: "+1234567890"        # Twilio'dan aldığın gönderici numara

SDK başlangıçta kimlikle ilklenir:

@Configuration
class TwilioConfig {
    TwilioConfig(@Value("${twilio.account-sid}") String sid,
                 @Value("${twilio.auth-token}") String token) {
        Twilio.init(sid, token);
    }
}

SMS gönderme

@Service
class SmsServisi {
    @Value("${twilio.from-number}") String gonderen;

    public void smsGonder(String kime, String mesaj) {
        Message.creator(
            new PhoneNumber(kime),          // alıcı: "+90555..."
            new PhoneNumber(gonderen),       // gönderen (Twilio numaran)
            mesaj
        ).create();
    }
}

WhatsApp için numara whatsapp:+90... biçiminde verilir; sesli arama için Call.creator(...).

Tipik kullanım: doğrulama kodu (OTP)

public void dogrulamaKoduGonder(String telefon) {
    String kod = String.format("%06d", new java.security.SecureRandom().nextInt(1_000_000));
    kodDeposu.kaydet(telefon, kod, Duration.ofMinutes(5));   // kısa ömürlü sakla
    smsServisi.smsGonder(telefon, "Doğrulama kodunuz: " + kod);
}

(Twilio'nun hazır Verify API'si OTP üretimi/doğrulamasını kendisi de yapar.)

Üretim pratikleri

  • Sırları koru: Account SID / Auth Token ortam değişkeni/secret yöneticisinden gelsin.
  • Asenkron gönder: SMS gönderimi yavaş ve hata-eğilimlidir; @Async/kuyruk ile arka planda (topic 05, 32).
  • Maliyet ve hız sınırı: SMS ücretlidir; kötüye kullanımı (OTP bombardımanı) hız sınırı (rate limit) ile engelle.
  • Webhook'lar: Twilio, teslimat durumu/gelen mesajları senin bir uca (callback URL) bildirir; bunları işlemek için bir endpoint kur.
  • Alternatifler: Amazon SNS, Vonage (Nexmo), MessageBird — benzer modelde SMS/iletişim servisleri.

Özet

Twilio ile Spring Boot'tan SMS/WhatsApp/sesli iletişim göndermeyi öğrendik: SDK kurulumu ve kimlik (Twilio.init), Message.creator(...) ile SMS gönderme, doğrulama kodu (OTP) senaryosu; asenkron gönderim, sır/maliyet/hız-sınırı ve webhook gibi üretim pratikleri. Sırada, bulut platformu entegrasyonu: Google Cloud Platform.