shekili / msmsms
MSM.az SMS Gateway integration for Laravel
v1.0.0
2026-04-17 10:36 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- illuminate/http: ^9.0|^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^9.0|^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0|^11.0
README
MSM.az SMS Gateway üçün Laravel inteqrasiyası. HTTP və XML API dəstəyi, balans sorğusu, çatdırılma statusu yoxlaması daxildir.
Quraşdırma
composer require Shekili/msmsms
Config faylını publish edin
php artisan vendor:publish --tag=msm-sms-config
Migration-u işə salın
Migration avtomatik yüklənir — əlavə publish lazım deyil:
php artisan migrate
Və ya faylı öz layihənizə kopyalamaq istəyirsinizsə:
php artisan vendor:publish --tag=msm-sms-migrations php artisan migrate
.env faylına əlavə edin
MSM_SMS_USERNAME=your_username MSM_SMS_API_KEY=your_api_key MSM_SMS_SENDER_NAME=YourName MSM_SMS_DRIVER=http # http or xml
İstifadə
Tək nömrəyə SMS göndərmək (HTTP API)
use Shekili\MsmSms\Facades\MsmSms; $response = MsmSms::send('994501234567', 'Salam, bu test mesajıdır!'); if ($response->isSuccess()) { echo "Mesaj göndərildi. ID: " . $response->messageId; echo "Balans: " . $response->balance; }
Eyni mətni çox nömrəyə göndərmək (XML API)
$response = MsmSms::sendToMany( ['994501234567', '994701234567', '994551234567'], 'Bütün istifadəçilərə salam!' );
Hər nömrəyə fərqli mətn (XML API)
$response = MsmSms::sendBulk([ ['to' => '994501234567', 'text' => 'Salam Əli!'], ['to' => '994701234567', 'text' => 'Salam Aynur!'], ]);
Mesaj statusunu yoxlamaq
$status = MsmSms::checkStatus('526973'); echo $status['msisdn']; // 994501234567 echo $status['status']; // 2 echo MsmSms::statusLabel($status['status']); // Delivered
Toplu göndərim statusu (Task ID ilə)
$messages = MsmSms::checkTaskStatus('1141205172211'); foreach ($messages as $msg) { echo $msg['msisdn'] . ' → ' . MsmSms::statusLabel($msg['status']); }
Balans sorğusu
$info = MsmSms::balance(); echo "Balans: " . $info['balance']; echo "Tarix: " . $info['date'];
Status Kodları
| Kod | Açıqlama |
|---|---|
| 0 | Pending (növbədə) |
| 1 | Enroute (operatora göndərilib) |
| 2 | Delivered (çatdırılıb) |
| 3 | Expired (vaxtı keçib) |
| 5 | Undeliverable (çatdırıla bilmir) |
| 8 | Rejected (rədd edilib) |
| 9 | ExpiredLocal (24 saatda çatdırılmayıb) |
SMS Logları
Göndərilən SMS-ləri görmək
use Shekili\MsmSms\Models\SmsLog; // Bütün loglar SmsLog::all(); // Yalnız çatdırılanlar SmsLog::delivered()->get(); // Uğursuzlar SmsLog::failed()->get(); // Konkret nömrə SmsLog::forRecipient('994501234567')->latest()->get();
Polimorfik əlaqə — logu modellə bağlamaq
SMS göndərərkən hansı modelə aid olduğunu qeyd edə bilərsiniz:
$user = User::find(1); MsmSms::send('994501234567', 'Sifarişiniz təsdiqləndi!', $user);
Sonra həmin istifadəçinin bütün SMS-lərini çəkmək üçün HasSmsLogs trait-i əlavə edin:
// App\Models\User.php use Shekili\MsmSms\Models\SmsLog; public function smsLogs() { return $this->morphMany(SmsLog::class, 'model'); } // İstifadəsi: $user->smsLogs()->delivered()->get();
Status yeniləmək
// checkStatus() avtomatik olaraq log cədvəlini yeniləyir MsmSms::checkStatus('526973'); // Toplu göndərim statusu MsmSms::checkTaskStatus('1141205172211');
use Shekili\MsmSms\Exceptions\MsmSmsException; try { $response = MsmSms::send('994501234567', 'Test'); } catch (MsmSmsException $e) { echo "Xəta kodu: " . $e->getErrorCode(); echo "Xəta mətni: " . $e->getErrorText(); }
Testlər
composer test
Lisenziya
MIT