kwtsms / kwtsms-notification-channel
kwtSMS notification channel for Laravel
Package info
github.com/boxlinknet/kwtsms-notification-channel
pkg:composer/kwtsms/kwtsms-notification-channel
Requires
- php: ^8.1
- illuminate/notifications: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- kwtsms/kwtsms: ^1.3
Requires (Dev)
- laravel/pint: ^1.0
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
README
This package makes it easy to send notifications using kwtSMS with Laravel.
About kwtSMS
kwtSMS is Kuwait's leading SMS gateway, providing reliable SMS delivery for businesses across Kuwait and internationally. Unlike international providers (Twilio, Infobip, etc.), kwtSMS is a local Kuwaiti provider with direct carrier connections, ensuring fast and reliable delivery to all Kuwaiti mobile networks (Zain, Ooredoo, STC, Virgin Mobile).
kwtSMS supports both promotional and transactional messaging, OTP delivery, bulk campaigns, and offers a simple REST/JSON API with client libraries in 12 programming languages.
Features
- Laravel Notifications Integration: Send SMS using Laravel's built-in notification system
- Simple API: Clean, fluent message builder with
KwtSmsMessage::create() - Custom Sender ID: Override the default sender ID per message
- Test Mode Support: Send test messages without consuming credits during development
- Auto-Discovery: Laravel package auto-discovery, no manual service provider registration needed
- Configurable: Publish and customize the config file to match your setup
- Lightweight: Minimal dependencies, uses Laravel's HTTP client under the hood
Contents
- About kwtSMS
- Features
- Installation
- Setting up kwtSMS
- Usage
- Available Methods
- Changelog
- Testing
- Security
- Contributing
- Credits
- License
Installation
You can install the package via Composer:
composer require kwtsms/kwtsms-notification-channel
Publish the configuration file:
php artisan vendor:publish --provider="NotificationChannels\KwtSms\KwtSmsServiceProvider" --tag="config"
Add your kwtSMS credentials to your .env file:
KWTSMS_USERNAME=your-username KWTSMS_PASSWORD=your-password KWTSMS_SENDER=your-sender-id KWTSMS_TEST_MODE=false
Setting up kwtSMS
To get started, you need a kwtSMS account:
- Sign up at kwtsms.com
- Obtain your API username and password from the dashboard
- Register a Sender ID (or use the default
KWT-SMS) - Add the credentials to your
.envfile as shown above
Usage
Create a notification class that uses the KwtSmsChannel:
use Illuminate\Notifications\Notification; use NotificationChannels\KwtSms\KwtSmsChannel; use NotificationChannels\KwtSms\KwtSmsMessage; class OrderShipped extends Notification { public function via($notifiable): array { return [KwtSmsChannel::class]; } public function toKwtSms($notifiable): KwtSmsMessage { return KwtSmsMessage::create("Your order #{$this->order->id} has been shipped!"); } }
Add the routeNotificationForKwtSms method to your notifiable model:
public function routeNotificationForKwtSms($notification): string { return $this->phone; // International format: 96598765432 }
You can also return a plain string from toKwtSms instead of a KwtSmsMessage object:
public function toKwtSms($notifiable): string { return 'Your order has been shipped!'; }
Available Methods
KwtSmsMessage
| Method | Description |
|---|---|
create(string $content = '') |
Static factory to create a new message |
content(string $content) |
Set the message content |
sender(string $sender) |
Override the default sender ID |
getContent() |
Get the message content |
getSender() |
Get the sender ID (null if not set) |
Changelog
Please see CHANGELOG for more information on what has changed recently.
Testing
composer test
Security
If you discover any security related issues, please use the issue tracker on GitHub instead of sending an email.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see LICENSE for more information.