fomvasss / laravel-notification-channel-turbo-sms
This package makes it easy to send notifications using [turbosms.ua](https://turbosms.ua) with Laravel
Package info
github.com/fomvasss/laravel-notification-channel-turbosms
pkg:composer/fomvasss/laravel-notification-channel-turbo-sms
Requires
- php: >=8.1
- guzzlehttp/guzzle: ^7.0
- illuminate/notifications: ^10|^11|^12|^13
- illuminate/support: ^10|^11|^12|^13
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0|^11.0
README
Відправка SMS-сповіщень через turbosms.ua у Laravel.
Можливості
- Відправка SMS через TurboSMS API
- Перевизначення відправника для кожного повідомлення
- Відкладена відправка (планування)
- Тестовий режим — імітація без реального надсилання
- Отримання балансу рахунку
- Подія
NotificationFailedпри помилках
Вимоги
| Залежність | Версія |
|---|---|
| PHP | >= 8.1 |
| Laravel | 10, 11, 12, 13 |
Встановлення
composer require fomvasss/laravel-notification-channel-turbo-sms
Налаштування
Додайте конфігурацію у config/services.php:
'turbosms' => [ 'api_token' => env('TURBOSMS_API_TOKEN'), 'sender' => env('TURBOSMS_SENDER', 'TAXI'), 'is_test' => env('TURBOSMS_IS_TEST', false), // Необов'язково: 'timeout' => env('TURBOSMS_TIMEOUT', 15), 'connect_timeout' => env('TURBOSMS_CONNECT_TIMEOUT', 10), ],
.env:
TURBOSMS_API_TOKEN=your_api_token_here TURBOSMS_SENDER=TAXI TURBOSMS_IS_TEST=false
Безкоштовні тестові відправники:
TAXI,AKCIYA,BEAUTY,Best-offer,Best-Shop,BonusShop,IT Alarm,MAGAZIN,Dostavka24,SERVIS TAXI,BRAND
Використання
1. Створіть клас сповіщення
use Illuminate\Notifications\Notification; use NotificationChannels\TurboSms\TurboSmsChannel; use NotificationChannels\TurboSms\TurboSmsMessage; class OrderShipped extends Notification { public function __construct(private Order $order) {} public function via(mixed $notifiable): array { return [TurboSmsChannel::class]; } public function toTurboSms(mixed $notifiable): TurboSmsMessage { return TurboSmsMessage::create("Ваше замовлення #{$this->order->id} відправлено!") ->from('MyShop'); // необов'язково: перевизначити відправника } }
2. Додайте метод маршрутизації до моделі
// app/Models/User.php public function routeNotificationForTurboSms(): string { return $this->phone; // напр. '380991234567' }
3. Надішліть сповіщення
$user->notify(new OrderShipped($order)); // або через фасад: Notification::send($users, new OrderShipped($order));
Методи повідомлення
| Метод | Опис |
|---|---|
content(string $text) |
Текст SMS |
from(string $sender) |
Перевизначити ім'я або номер відправника |
time(?int $timestamp) |
Запланувати відправку. Наприклад: time() + 7*60*60 — через 7 годин |
test(bool $test = true) |
Перевизначити тестовий режим для конкретного повідомлення |
Приклад:
TurboSmsMessage::create('Привіт!') ->from('BRAND') ->time(time() + 3600) // відправити через 1 годину ->test(false);
Пряме використання API
Можна використовувати TurboSmsApi напряму через сервіс-контейнер:
Отримати баланс:
$balance = app(\NotificationChannels\TurboSms\TurboSmsApi::class)->getBalance(); // float|null — напр. 123.45
Відправити повідомлення:
use NotificationChannels\TurboSms\TurboSmsApi; use NotificationChannels\TurboSms\TurboSmsMessage; $result = app(TurboSmsApi::class)->sendMessage( '380991234567', TurboSmsMessage::create('Привіт від Laravel!') ); // Повертає: // [ // 'success' => true, // 'result' => [...], // дані відповіді API // 'info' => 'TurboSMS response status: OK', // ]
Обробка помилок
При невдалій відправці канал генерує подію Illuminate\Notifications\Events\NotificationFailed.
use Illuminate\Notifications\Events\NotificationFailed; use Illuminate\Support\Facades\Event; Event::listen(NotificationFailed::class, function (NotificationFailed $event) { // $event->notifiable — модель отримувача // $event->notification — об'єкт сповіщення // $event->data['exception'] — виняток logger()->error('TurboSMS помилка: ' . $event->data['message']); });
Підтримка проекту
Якщо пакет вам корисний — підтримайте розробку:
USDT TRC20: THLgp6DxiAtbNHvgnKV56vk1L38UuUagKf
Changelog
Дивіться CHANGELOG.
Безпека
Повідомляйте про вразливості на fomvasss@gmail.com, а не через публічний issue.
Участь у розробці
Дивіться CONTRIBUTING.
Автори
Ліцензія
MIT — дивіться LICENSE.md.