Laravel SMS API Paketi Yayında
Laravel SMS API Paketi Yayında: Türkiye'deki SMS Sağlayıcılarını Tek Arayüzde Birleştirin
Laravel projelerinde SMS gönderimi artık daha kolay.
Canopus Bilişim olarak geliştirdiğimiz fatihgirgic/laravel-sms-api paketi, Türkiye'de yaygın olarak kullanılan SMS servis sağlayıcılarını Laravel uygulamalarında tek ve ortak bir arayüz üzerinden kullanabilmenizi sağlıyor.
Paket, 11 Ağustos 2026 tarihinde Packagist üzerinde yayınlandı ve açık kaynak olarak geliştirilmeye devam ediyor.
Neden Böyle Bir Pakete İhtiyaç Var?
Bir Laravel projesine SMS özelliği eklediğinizde genellikle kullandığınız SMS sağlayıcısının API'sine özel kodlar yazmanız gerekir.
Örneğin projeniz Netgsm kullanıyorsa Netgsm API'sine, başka bir projede Verimor kullanıyorsanız Verimor API'sine göre farklı entegrasyonlar oluşturmanız gerekebilir.
Bu yaklaşım kısa vadede çalışsa da uzun vadede kodun sağlayıcıya bağımlı hale gelmesine neden olur.
laravel-sms-api bu problemi driver tabanlı mimari ile çözmeyi amaçlıyor.
Uygulamanızdaki SMS gönderim kodu değişmeden, .env üzerinden kullanılacak sağlayıcıyı değiştirebilirsiniz.
Desteklenen SMS Sağlayıcıları
Paketin mevcut sürümünde aşağıdaki sağlayıcılar destekleniyor:
Mutlucell
Verimor
Netgsm
VatanSMS.net
İletimerkezi
Paketin amacı, farklı sağlayıcıların farklı API yapılarını Laravel uygulamasından mümkün olduğunca soyutlamak ve geliştiriciye ortak bir kullanım deneyimi sunmak.
Kurulum
Paketi Composer üzerinden birkaç saniye içerisinde projenize ekleyebilirsiniz:
composer require fatihgirgic/laravel-sms-api
Laravel'in package auto-discovery özelliği sayesinde servis sağlayıcı ve Sms facade'i otomatik olarak yüklenir.
İhtiyaç halinde config dosyasını da yayınlayabilirsiniz:
php artisan vendor:publish --tag=sms-config
Bu işlem sonrasında config/sms.php dosyanız oluşturulur.
SMS Sağlayıcınızı .env Üzerinden Seçin
Örneğin İletimerkezi kullanmak için:
SMS_DRIVER=iletimerkezi
Diğer sağlayıcıların kimlik bilgileri de kendi environment değişkenleri üzerinden tanımlanabiliyor.
Bu sayede SMS sağlayıcınızı değiştirmek istediğinizde uygulamanızdaki SMS gönderim kodlarını baştan yazmanız gerekmiyor.
SMS Göndermek Çok Basit
Paketi kullanmanın en temel yolu Sms facade'i üzerinden SMS göndermek:
use Canopus\SmsApi\Facades\Sms;
$response = Sms::send(
'905551112233',
'Merhaba dünya!'
);
Birden fazla telefon numarasına aynı mesajı göndermek de mümkün:
$response = Sms::send(
[
'905551112233',
'905551112244'
],
'Merhaba dünya!'
);
İsterseniz varsayılan sağlayıcıdan bağımsız olarak belirli bir driver'ı doğrudan seçebilirsiniz:
$response = Sms::driver('netgsm')
->send(
'905551112233',
'Merhaba!'
);
Bu yapı sayesinde uygulamanızın SMS gönderim mantığı ile SMS sağlayıcısının API'si birbirinden ayrılmış olur.
Gönderim Sonucunu Kontrol Edin
Paket, sağlayıcıların farklı response yapılarını ortak bir SmsResponse nesnesi altında topluyor.
Örneğin:
if ($response->successful()) {
logger()->info('SMS gönderildi', [
'messageId' => $response->messageId
]);
} else {
logger()->error('SMS gönderilemedi', [
'hata' => $response->errorMessage
]);
}
Response içerisinde:
successful()/failed()messageIderrorMessageraw
alanlarına erişebilirsiniz.
Dependency Injection Desteği
Facade kullanımının yanında SmsManager üzerinden Dependency Injection da kullanılabilir.
Örneğin bir bildirim servisinde:
use Canopus\SmsApi\SmsManager;
class BildirimServisi
{
public function __construct(
private SmsManager $sms
) {}
public function dogrulamaKoduGonder(
string $telefon,
string $kod
): void {
$this->sms->send(
$telefon,
"Doğrulama kodunuz: {$kod}"
);
}
}
Bu yaklaşım özellikle büyük Laravel uygulamalarında servis katmanını daha düzenli ve test edilebilir tutmak için kullanılabilir.
Ek Gönderim Seçenekleri
SMS gönderirken bazı seçenekleri doğrudan gönderebilirsiniz.
Örneğin gönderici adını değiştirmek veya ileri tarihli gönderim planlamak mümkündür:
Sms::send(
'905551112233',
'Merhaba!',
[
'sender' => 'FIRMA',
'scheduledAt' => '2026-08-12 10:00',
]
);
Desteklenen seçenekler kullanılan SMS sağlayıcısının API yeteneklerine bağlı olarak değerlendirilmektedir.
Laravel ve PHP Uyumluluğu
Paket şu anda:
PHP 8.1+
Laravel 10
Laravel 11
Laravel 12
Guzzle 7.5+
ile çalışacak şekilde yapılandırılmıştır.
Ayrıca paket içerisinde PHPUnit ve Orchestra Testbench kullanılarak test altyapısı da bulunmaktadır. Driver testlerinde gerçek SMS gönderimleri yerine Guzzle MockHandler kullanılarak sahte HTTP yanıtları üzerinden test yapılmaktadır.
Yeni SMS Sağlayıcıları Eklenebilir
Paketin driver mimarisi yeni SMS sağlayıcılarının eklenmesini de kolaylaştıracak şekilde tasarlandı.
Yeni bir sağlayıcı eklemek için Canopus\SmsApi\Contracts\SmsDriver arayüzünü uygulayan bir driver oluşturulması ve SmsManager içerisinde ilgili driver'ın tanımlanması yeterli.
Bu sayede paket yalnızca mevcut sağlayıcılarla sınırlı kalmayacak şekilde geliştirilmeye uygun bir mimariye sahip.
Açık Kaynak ve MIT Lisansı
fatihgirgic/laravel-sms-api MIT lisansı ile yayınlandı.
Kaynak kodu GitHub üzerinde herkese açık durumda. Issue ve Pull Request'ler üzerinden katkıya da açık.
Paketi İnceleyin
Paketi Composer üzerinden doğrudan projenize ekleyebilirsiniz:
composer require fatihgirgic/laravel-sms-api
Packagist:
fatihgirgic/laravel-sms-apiGitHub:
fatihgirgic/laravel-sms-api
Canopus Bilişim olarak Laravel ve PHP ekosistemi için geliştirici odaklı açık kaynak araçlar geliştirmeye devam ediyoruz.
SMS entegrasyonunu farklı projelerde tekrar tekrar sıfırdan yazmak yerine, ortak bir altyapı kullanmak istiyorsanız laravel-sms-api projeniz için iyi bir başlangıç noktası olabilir.
Github: https://github.com/fatihgirgic/laravel-sms-api