clevyr / laravel-twilio-channel
A Laravel Notification channel for Twilio
Installs: 19 908
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 9
Forks: 0
Open Issues: 1
Requires
- php: ^8.0
- spatie/laravel-package-tools: ^1.0
- twilio/sdk: ^8.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^9.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^11.0
- spatie/laravel-ray: ^1.0
README
A Laravel Notification channel for sending SMS messages with Twilio.
Installation
You can install the package via composer:
composer require clevyr/laravel-twilio-channel
Configure an account on Twilio, and then add the following env vars:
TWILIO_SID=
TWILIO_AUTH_TOKEN=
TWILIO_PHONE_NUMBER=
Next, publish the config file with:
php artisan vendor:publish --provider="Clevyr\LaravelTwilioChannel\LaravelTwilioChannelServiceProvider"
This is the contents of the published config file (without descriptive comments):
return [ 'sid' => env('TWILIO_SID'), 'auth_token' => env('TWILIO_AUTH_TOKEN'), 'phone_number' => env('TWILIO_PHONE_NUMBER'), ];
Usage
In your Laravel notifications:
- Implement the
TwilioNotification
interface - Add the
TwilioChannel
to yourvia
return array value - Build a
toTwilio
function that returns aTwilioMessage
object
<?php namespace App\Notifications; use Clevyr\LaravelTwilioChannel\Channels\TwilioChannel; use Clevyr\LaravelTwilioChannel\Contracts\TwilioNotification; use Clevyr\LaravelTwilioChannel\Messages\TwilioMessage; use Illuminate\Notifications\Notification; class MyNotification extends Notification implements TwilioNotification { /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return [TwilioChannel::class]; } /** * Get the twilio representation of the notification. * * @param mixed $notifiable * @return \Clevyr\LaravelTwilioChannel\Messages\TwilioMessage */ public function toTwilio($notifiable) { return (new TwilioMessage) ->line('Your first line.') ->line('A second line, with a break between the last line.'); }
By default, TwilioChannel
will use your notifiable's phone_number
field
to send an SMS message, which must be in a format such as 8884445555
.
Overriding the Notifiable Phone Number Field
To override the phone_number
and use a different field, set the
twilioPhoneNumberField
instance variable in your notifiable class:
class User extends Authenticatable { public $twilioPhoneNumberField = 'primary_phone_number'; // }
On-Demand Notifications
If you wish to send an on-demand notification, and not use a notifiable
object
at all, you can do that:
use Illuminate\Support\Facades\Notification;
Notification::route('twilio', '5555555555')
->notify(new InvoicePaid($invoice));
Testing
composer test
Linting
composer analyse
Formatting w/ Laravel Pint
composer format
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.