Laravel package to send transactional SMSes via PanaceaMobile.
- PHP 7.2+
- Laravel 7.0+
composer require emotality/panacea-laravel
php artisan vendor:publish --provider="Emotality\Panacea\PanaceaMobileServiceProvider"
- Add the following lines to your
.env
file:
PANACEA_USERNAME="<panacea_username>"
PANACEA_PASSWORD="<panacea_password_or_api_key>"
PANACEA_FROM="<from_name>" // Optional
\PanaceaMobile::sms('+27820000001', "1st Line\n2nd Line\n3rd Line");
// or
\PanaceaMobile::sms('+27820000001', "1st Line\n2nd Line\n3rd Line", 'From Name');
Response will be a bool
, true
if successful, false
if unsuccessful.
\PanaceaMobile::smsMany(['+27820000001', '+27820000002'], "1st Line\n2nd Line\n3rd Line");
// or
\PanaceaMobile::smsMany(['+27820000001', '+27820000002'], "1st Line\n2nd Line\n3rd Line", 'From Name');
Response will be an array where the keys are the recipients' numbers, the values will be booleans:
array:2 [▼
"+27820000001" => true
"+27820000002" => false
]
namespace App\Notifications;
use Emotality\Panacea\PanaceaMobileSms;
use Emotality\Panacea\PanaceaMobileSmsChannel;
use Illuminate\Notifications\Notification;
class ExampleNotification extends Notification
{
// Notification channels
public function via($notifiable)
{
return [PanaceaMobileSmsChannel::class];
}
// Send SMS
public function toSms($notifiable) // Can also use toPanacea($notifiable)
{
// Send SMS without "to", this value will automatically be fetched from
// the "routeNotificationForPanacea" method in your notifiable entity.
// See the "Routing SMS Notifications" section below.
return (new PanaceaMobileSms())->message("1st Line\n2nd Line\n3rd Line");
// or send SMS to a single recipient, specifying the "to" value
return (new PanaceaMobileSms())
->to($notifiable->mobile) // Assuming $user->mobile is their mobile number
->from('From Name') // Optional. Will override config's "from" value.
->message("1st Line\n2nd Line\n3rd Line");
// or send SMS to multiple recipients
return (new PanaceaMobileSms())
->toMany(['+27820000001', '+27820000002'])
->from('From Name') // Optional. Will override config's "from" value.
->message("1st Line\n2nd Line\n3rd Line");
}
}
To route Panacea notifications to the proper phone number, define a routeNotificationForPanacea
method on your notifiable entity:
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
/**
* Route notifications for the Panacea channel.
*
* @param \Illuminate\Notifications\Notification $notification
* @return string
*/
public function routeNotificationForPanacea($notification)
{
return $this->mobile;
}
}
panacea-laravel is released under the MIT license. See LICENSE for details.