cca-bheath/laravel-sms-clicksend
| Install | |
|---|---|
composer require cca-bheath/laravel-sms-clicksend |
|
| Latest Version: | 4.0.1 |
| PHP: | >=7.2 |
| License: | MIT |
| Last Updated: | Mar 9, 2021 |
| Links: | GitHub · Packagist |
ClickSend notifications channel for Laravel 5.8 / 6.* / 7.* / 8.*
This package makes it easy to send notifications using clicksend.com with Laravel 5.6+. Uses ClickSend PHP API wrapper [https://github.com/ClickSend/clicksend-php]
Contents
Installation
Install the package via composer:
composer require cca-bheath/laravel-sms-clicksend
Add the service provider to config/app.php:
...
'providers' => [
...
NotificationChannels\ClickSend\ClickSendServiceProvider::class,
],
...
Publish the clicksend config file config/clicksend.php:
php artisan vendor:publish --provider="NotificationChannels\ClickSend\ClickSendServiceProvider" --tag="config"
Usage
Use ClickSendChannel in via() method inside your notification classes. Example:
namespace App\Notifications;
use Illuminate\Notifications\Notification;
use NotificationChannels\ClickSend\ClickSendMessage;
use NotificationChannels\ClickSend\ClickSendChannel;
class ClickSendTest extends Notification
{
public $token;
/**
* Create a notification instance.
*
* @param string $token
*/
public function __construct($token)
{
$this->token = $token;
}
/**
* Required
*/
public function via($notifiable)
{
return [ClickSendChannel::class];
}
/**
* Required
*/
public function getMessage($notifiable)
{
return "SMS test to user #{$notifiable->id} with token {$this->token} by ClickSend";
}
/**
* Optional
*/
public function updateClickSendMessage($message)
{
$message->setFrom('+15555555555');
return $message;
}
}
In notifiable model (User), include method routeNotificationForClickSend() that returns recipient mobile number:
...
public function routeNotificationForClickSend()
{
return $this->phone;
}
...
Optional
If you want to use a custom notification route instead:
Notification::route('notification_for_click_send', '+15555555555')
->notify(new ClickSendTest());
From controller then send notification standard way:
$user = User::find(1);
try {
$user->notify(new ClickSendTest('ABC123'));
}
catch (\Exception $e) {
// do something when error
return $e->getMessage();
}
Events
Following events are triggered by Notification. By default:
- Illuminate\Notifications\Events\NotificationSending
- Illuminate\Notifications\Events\NotificationSent
and this channel triggers one when submission fails for any reason:
- Illuminate\Notifications\Events\NotificationFailed
To listen to those events create listener classes in app/Listeners folder e.g. to log failed SMS:
namespace App\Listeners;
use Illuminate\Notifications\Events\NotificationFailed;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Log;
use NotificationChannels\ClickSend\ClickSendChannel;
class NotificationFailedListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Notification failed event handler
*
* @param NotificationFailed $event
* @return void
*/
public function handle(NotificationFailed $event)
{
// Handle fail event for ClickSend
//
if($event->channel == ClickSendChannel::class) {
echo 'failed'; dump($event);
$logData = [
'notifiable' => $event->notifiable->id,
'notification' => get_class($event->notification),
'channel' => $event->channel,
'data' => $event->data
];
Log::error('Notification Failed', $logData);
}
// ... handle other channels ...
}
}
Then register listeners in app/Providers/EventServiceProvider.php
...
protected $listen = [
'Illuminate\Notifications\Events\NotificationFailed' => [
'App\Listeners\NotificationFailedListener',
],
'Illuminate\Notifications\Events\NotificationSent' => [
'App\Listeners\NotificationSentListener',
],
'Illuminate\Notifications\Events\NotificationSending' => [
'App\Listeners\NotificationSendingListener',
],
];
...
API Client
To access the rest of ClickSend API you can get client from ClickSendApi:
$client = app(ClickSendApi::class)->getClient();
// then get for eaxample yor ClickSend account details:
$account = $client->getAccount()->getAccount();
// or list of countries:
$countries = $client->getCountries()->getCountries();
Config
CLICKSEND_DRIVERclicksendorlog- Setting to
logwill send the SMS message to the log file and not try to send it
CLICKSEND_ENABLED- If set to false the channel will not run and return true. This is good for testing
CLICKSEND_USERNAME- Username on ClickSend
- You can see this information by click on the API Credentials link at the top of the dashboard
CLICKSEND_API_KEY- API Key on ClickSend
- You can see this information by click on the API Credentials link at the top of the dashboard
CLICKSEND_SMS_FROM- Override the FROM on SMS and MMS messages
- Can leave blank
CLICKSEND_PREFIX- Enforce that all
tohave this prefix - For example +1
- This should only be used if you are sure that all
tomust have this prefix
- Enforce that all
Changelog
Please see CHANGELOG for more information what has changed recently.
Testing
Incomplete
$ composer test
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.
Related Packages
This package makes it easy to send notifications using [turbosms.ua](https://tur...
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 4.0.1 | >=7.2 | 5.8.*| | MIT | |
| 4.0.0 | >=7.2 | 5.8.*| | MIT | |
| 3.0.0 | >=7.2 | 5.8.*| | MIT | |
| 2.1.1 | >=7.2 | 5.8.*| | MIT | |
| 2.1.0 | >=7.2 | 5.8.*| | MIT | |
| 2.0.2 | >=7.2 | 5.8.*| | MIT | |
| 2.0.1 | >=7.2 | ^5.8 | MIT | |
| 2.0.0 | >=7.2 | ^5.8 | MIT | |
| 1.1.0 | >=7.1 | ^5.6 | MIT | |
| v1.0.1 | >=5.6.4 | 5.1.*| | MIT |
Pre-releases (2)
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 1.1.0-beta1 | >=7.1 | ^5.6 | MIT | |
| 1.1.0-alpha1 | >=5.6.4 | ^5.6 | MIT |