Two Laravel Packages to Send SMS with Twilio
Founder of QuickAdminPanel
Sending SMS is a pretty common way to notify users about some action – like, transaction finished successfully, invoice ready etc. And Twilio is almost a market standard to do that easily. And there are at least two packages for Laravel to make it even easier.
Preparation: Trial Twilio Account
Before you can send any SMS, you need to register at Twilio, and choose your “from” phone number. Twilio gives some credits for your trial account – in my case, it was $2.50, with price of SMS is $0.04 (that depends on the country), it equals to 62 trial SMS messages. Enough to get started.
Package 1. Aloha Twilio: send SMS whenever you want
If you want to just send SMS to any number, then the best package is aloha/laravel-twilio. It uses Twilio API in a Laravel-friendly way, so all you need to send SMS is this:
1. Run this command to install the package:
composer require aloha/twilio
Notice: if you run Laravel 5.4 or lower, there is some additional magic to be done in config/app.php.
2. Add this code whenever you want to send SMS:
$account_id = 'XXXXXXXXXX'; $auth_token = 'YYYYYYYYYY'; $from_phone_number = '+37066802637'; // phone number you've chosen from Twilio $twilio = new Twilio($account_id, $auth_token, $from_phone_number); $to_phone_number = '+37062218617'; // who are you sending to? $twilio->message($to_phone_number, 'Pink Elephants and Happy Rainbows');
This is how result looked on my mobile:
By the way, your account credentials can be found on your Twilio Console main page:
Of course, this package is not only for SMS sending, as Twilio is offering more services like phone calls and others:
So check out other functions, if you with to use them.
Package 2. Send SMS as User Notifications
Laravel has a function called Notifications – it allows to notify users via different channels: email, Slack messages, and also SMS via Twilio. There’s even a separate website and collection of packages for various notification channels.
So let’s explore the one for Twilio: a package called – surprise, surprise – laravel-notification-channels/twilio.
Installation is simple:
composer require laravel-notification-channels/twilio
Next, you need to add your credentials to the file config/services.php:
'twilio' => [ 'username' => env('TWILIO_USERNAME'), // optional when using auth token 'password' => env('TWILIO_PASSWORD'), // optional when using auth token 'auth_token' => env('TWILIO_AUTH_TOKEN'), // optional when using username and password 'account_sid' => env('TWILIO_ACCOUNT_SID'), 'from' => env('TWILIO_FROM'), // optional ],
To send notification to a user, we need to add a phone_number field to users table – field with exact that name, that’s what the package will be looking for:
Schema::table('users', function (Blueprint $table) { $table->string('phone_number')->nullable(); });
Now, let’s create a Laravel notification:
php artisan make:notification AccountApproved
And fill the class with Twilio-related things:
// ... use NotificationChannels\Twilio\TwilioChannel; use NotificationChannels\Twilio\TwilioSmsMessage; class AccountApproved extends Notification { // ... public function via($notifiable) { return [TwilioChannel::class]; } public function toTwilio($notifiable) { return (new TwilioSmsMessage()) ->content("Hi {$notifiable->name}. Your account was approved!"); } }
Finally, let’s launch notification from Controller (or anywhere you want):
$user = User::find(1); $user->notify(new AccountApproved());
And here’s what I’ve got to my phone!
So that’s it – that’s how you use Laravel and its notifications function with Twilio.
Any more related tools you know? Please add them in the comments.