This package makes it easy to send notifications using Smsapi with Laravel 5.5+, 6.x, & 7.x
You can install the package via composer:
composer require laravel-notification-channels/smsapi
You can also publish the config file with:
php artisan vendor:publish --provider="NotificationChannels\Smsapi\SmsapiServiceProvider"
Log in to your Smsapi dashboard and configure your preferred authentication method. There is a
polish version and an international version
which have separated accounts.
Set your credentials and defaults in config/smsapi.php
:
'auth' => [
'method' => 'token',
// 'method' => 'password',
'credentials' => [
'token' => env('SMSAPI_AUTH_TOKEN'),
// 'username' => env('SMSAPI_AUTH_USERNAME'),
// 'password' => env('SMSAPI_AUTH_PASSWORD'), // Hashed by MD5
],
// Service of smsapi. Can be SmsapiClient::SERVICE_PL or SmsapiClient::SERVICE_COM.
'service' => SmsapiClient::SERVICE_PL,
],
'defaults' => [
'common' => [
// 'notify_url' => env('SMSAPI_NOTIFY_URL'),
// 'partner' => env('SMSAPI_PARTNER'),
// 'test' => env('SMSAPI_TEST', true),
],
'sms' => [
// 'from' => env('SMSAPI_FROM'),
// 'fast' => false,
// 'flash' => false,
// 'encoding' => 'utf-8',
// 'normalize' => false,
// 'nounicode' => false,
// 'single' => false,
],
'mms' => [
],
'vms' => [
// 'from' => env('SMSAPI_FROM'),
// 'tries' => 2,
// 'interval' => 300,
// 'tts_lector' => 'Agnieszka',
// 'skip_gsm' => false,
],
],
You can use the channel in your via()
method inside the notification:
use Illuminate\Notifications\Notification;
use NotificationChannels\Smsapi\SmsapiChannel;
use NotificationChannels\Smsapi\SmsapiSmsMessage;
class FlightFound extends Notification
{
public function via($notifiable)
{
return [SmsapiChannel::class];
}
public function toSmsapi($notifiable)
{
return (new SmsapiSmsMessage())->content("Buy now your flight!");
}
}
use Illuminate\Notifications\Notification;
use NotificationChannels\Smsapi\SmsapiChannel;
use NotificationChannels\Smsapi\SmsapiMmsMessage;
class AnimalTrespassed extends Notification
{
public $photoId;
public function via($notifiable)
{
return [SmsapiChannel::class];
}
public function toSmsapi($notifiable)
{
return (new SmsapiMmsMessage())->subject('Animal!')->smil($this->smil());
}
private function smil()
{
$url = route('photos', ['id' => $this->photoId]);
$smil =
"<smil>" .
"<head>" .
"<layout>" .
"<root-layout height='100%' width='100%'/>" .
"<region id='Image' width='100%' height='100%' left='0' top='0'/>" .
"</layout>" .
"</head>" .
"<body><par><img src='{$url}' region='Image' /></par></body>" .
"</smil>";
return $smil;
}
}
Add a routeNotificationForSmsapi
method to your Notifiable model to return the phone number(s):
public function routeNotificationForSmsapi()
{
return $this->phone_number;
}
Or add a routeNotificationForSmsapiGroup
method to return the contacts group:
public function routeNotificationForSmsapiGroup()
{
return $this->contacts_group;
}
to(string|string[] $to)
group(string $group)
content(string $content)
template(string $template)
from(string $from)
fast(bool $fast = true)
flash(bool $flash = true)
encoding(string $encoding)
normalize(bool $normalize = true)
nounicode(bool $nounicode = true)
single(bool $single = true)
date(int|string $date)
notifyUrl(string $notifyUrl)
partner(string $partner)
test(bool $test = true)
to(string|string[] $to)
group(string $group)
subject(string $subject)
smil(string $smil)
date(int|string $date)
notifyUrl(string $notifyUrl)
partner(string $partner)
test(bool $test = true)
to(string|string[] $to)
group(string $group)
file(string $file)
tts(string $tts)
ttsLector(string $ttsLector)
from(string $from)
tries(int $tries)
interval(int $interval)
skipGsm(bool $skipGsm = true)
date(int|string $date)
notifyUrl(string $notifyUrl)
partner(string $partner)
test(bool $test = true)
Please see CHANGELOG for more information what has changed recently.
$ composer test
If you discover any security related issues, please email mat.drost@gmail.com instead of using the issue tracker.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.