A Laravel Notification channel for sending SMS messages with Twilio.
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'),
];
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
.
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';
//
}
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));
composer test
composer analyse
Formatting w/ Laravel Pint
composer format
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.