salamwaddah / laravel-smsglobal-notifications-channel
SmsGlobal notification channel for Laravel 7, 8, 9, 10, 11
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^6.5 || ^7.2
- illuminate/http: ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/notifications: ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.5
README
Laravel SMSGlobal
Use this package to send SMS with SmsGlobal
Installation
composer require salamwaddah/laravel-smsglobal-notifications-channel
Configure
In your services.php
config file add the following configs.
// ...
'sms_global' => [
'debug' => env('SMS_GLOBAL_DEBUG', true),
'api_key' => env('SMS_GLOBAL_API_KEY'),
'api_secret' => env('SMS_GLOBAL_API_SECRET'),
'origin' => 'YourCompanyName',
],
Debug Mode
Debug mode is on by default, which means SMS will not be actually sent, instead only a log record will be added
to /storage/logs/laravel.log
In your services.php
change the value of sms_global.debug
to false
Usage
Notification class
Using Laravel notification class add SmsGlobalChannel::class
to via()
method like so:
use Illuminate\Notifications\Notification; use SalamWaddah\SmsGlobal\SmsGlobalChannel; use SalamWaddah\SmsGlobal\SmsGlobalMessage; class OrderPaid extends Notification { public function via($notifiable): array { return [ SmsGlobalChannel::class, ]; } public function toSmsGlobal($notifiable): SmsGlobalMessage { $message = 'Order paid, Thank you for your business!'; $smsGlobal = new SmsGlobalMessage(); return $smsGlobal->to($notifiable->phone)->content($message); } }
On demand notification
You can utilize Laravel on-demand notification facade to send SMS directly to a phone number without having to store a user in your application.
Notification::send( '+971555555555', new OrderPaid($order) );
The notifiable argument in toSmsGlobal
of your notification class should expect the same data type you passed to
the Notification
facade.
In this example, we passed the phone number as a string
because we don't have a "user" and so toSmsGlobal
should
expect a string
.
public function toSmsGlobal(string $phoneNumber): SmsGlobalMessage { $message = 'Order paid, Thank you for your business!'; $smsGlobal = new SmsGlobalMessage(); return $smsGlobal->to($phoneNumber)->content($message); }