Skip to main content
SMS servisi src/DiyanetCleanArchitecture.Infrastructure.Services.Sms projesindedir ve yalnızca OTP (tek kullanımlık kod) SMS’i gönderir. Sağlayıcı NetGSM REST v2 OTP API’sidir (/sms/rest/v2/otp).

Arayüz

OtpCode overload’u mesajı sabit bir kalıpla kendisi oluşturur (ASCII-only):

ASCII zorunluluğu

NetGSM OTP API’si Türkçe karakter kabul etmez. Gönderimden önce mesaj ASCII kontrolünden geçer; değilse SmsServiceException fırlatılır:
OTP mesaj metinlerinde “ı, ş, ğ, ü, ö, ç” gibi karakterler kullanılamaz. Yukarıdaki sabit mesajda da bilinçli olarak “paylasmayin” yazılmıştır.

İstek/yanıt modeli

İstek gövdesi NetGSM’in beklediği alan adlarıyla (küçük harf) serialize edilir. Telefon numarası Phone.ToNetGsmFormat() ile NetGSM formatına çevrilir:
Esas başarı kontrolü HTTP status değil, gövdedeki code alanıdır. code != "00" ise iş hatası olarak değerlendirilir:

NetGSM hata kodları

GsmOtpErrors.ToMessage(code) kod → mesaj eşlemesini yapar:

Ortam bazlı telefon çözümleme — SmsPhoneResolver

Production’da gerçek numaralara gönderim yapılır; Development/Staging’de ise yalnızca config’teki test numaralarına gönderilir (gerçek kullanıcılara SMS gitmesini engellemek için):

Config — Services:Sms

string
NetGSM API kök adresi. HttpClient BaseAddress olarak ayarlanır.
string
default:"/sms/rest/v2/otp"
OTP endpoint yolu.
string
Basic Auth kimlik bilgileri (Base64’lenip Authorization: Basic header’a yazılır).
string
Onaylı gönderici adı (msgheader).
string[]
Production dışı ortamlarda gönderim yalnızca bu numaralara yapılır.
int
default:"3"
Polly HTTP retry sayısı (300ms × deneme lineer backoff).

DI kaydı — HttpClient + Polly + Basic Auth

Email Servisi

OTP’nin e-posta kanalı.

Value Objects

Phone.ToNetGsmFormat() ve OtpCode.Generate() value object’leri.