shekili/msmsms

MSM.az SMS Gateway integration for Laravel

Maintainers

Package info

github.com/shekili/msmsms

pkg:composer/shekili/msmsms

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-04-17 10:36 UTC

This package is auto-updated.

Last update: 2026-04-17 10:38:12 UTC


README

Latest Version License

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