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-04-08 14:52:02 UTC
README
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.