shafimsp / laravel-sms-notification-channel
Laravel SMS Notification Channel
Requires
- php: ^7.3|^8.0
- illuminate/log: ~5.8.0|^6.0|^7.0|^8.0
- illuminate/notifications: ~5.8.0|^6.0|^7.0|^8.0
- illuminate/support: ~5.8.0|^6.0|^7.0|^8.0
Requires (Dev)
- nexmo/client: ^2.0
Suggests
- nexmo/client: Required to use the nexmo sms notification driver.
This package is auto-updated.
Last update: 2024-12-08 16:34:02 UTC
README
SMS Notification Channel for Laravel
Introduction
This package makes it easy to send SMS notifications using different SMS provider with Laravel.
Installation
To install the PHP client library using Composer:
composer require shafimsp/laravel-sms-notification-channel
The package will automatically register itself.
Configuration
You can optionally publish the config file with:
php artisan vendor:publish --provider="Shafimsp\SmsNotificationChannel\SmsServiceProvider" --tag="config"
This is the contents of the published config file:
return [ /* |-------------------------------------------------------------------------- | The default SMS Driver |-------------------------------------------------------------------------- | | The default sms driver to use as a fallback when no driver is specified | while using the SMS. | | Supported: "nexmo", "log", "null" | */ 'default' => env('SMS_DRIVER', 'log'), /* |-------------------------------------------------------------------------- | Log Channel |-------------------------------------------------------------------------- | | If you are using the "log" driver, you may specify the logging channel | if you prefer to keep mail messages separate from other log entries | for simpler reading. Otherwise, the default channel will be used. | */ 'log_channel' => env('SMS_LOG_CHANNEL'), ];
Usage
Notification
Set sms
channel in via
method on notification class
/** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['sms']; }
and define a toSms method on the notification class.
/** * Get the SMS representation of the notification. * * @param mixed $notifiable * @return string */ public function toSms() { return 'Your message content goes here'; }
Or
/** * Get the notification's delivery channels. * * @param mixed $notifiable * @return string */ public function toSms() { return (new SmsMessage()) ->content('Your message goes here'); }
Unicode Content
If your SMS message will contain unicode characters, you should call the unicode method when constructing the SmsMessage instance:
/** * Get the notification's delivery channels. * * @param mixed $notifiable * @return string */ public function toSms() { return (new SmsMessage()) ->content('Your message goes here') ->unicode(); }
Customizing The "From" Number
If you would like to send some notifications from a phone number that is different from the phone number specified in your config/services.php file, you may use the from method on a SmsMessage instance:
/** * Get the notification's delivery channels. * * @param mixed $notifiable * @return string */ public function toSms() { return (new SmsMessage()) ->content('Your message goes here') ->unicode(); }
Routing SMS Notifications
When sending notifications via the sms
channel, you should define a routeNotificationForSms method on the entity:
/** * Route notifications for the Nexmo channel. * * @param \Illuminate\Notifications\Notification $notification * @return string */ public function routeNotificationForSms($notification) { return $this->phone; }
Direct method
\Shafimsp\SmsNotificationChannel\Facades\Sms::driver('nexmo') ->content("Message content goes here") ->to('MOBILE_NUMBER_TO_SENT_TO') ->send();
Security
If you discover any security related issues, please email shafimsp@gmail.com instead of using the issue tracker.
License
Laravel SMS Notification Channel is open-sourced software licensed under the MIT license.