Semaphore PHP
, (*1)
This is a PHP client for the Semaphore SMS service provider with out of the box Laravel integration., (*2)
Installation
Install via composer:, (*3)
composer require humans/semaphore-sms
To start using the library, we'll have to provide the Sempahore API key., (*4)
Send a message
$client = new Client(
'<SEMAPHORE API KEY>',
// If the sender is left blank, SEMAPHORE will be the default sender name.
'<SENDER>',
);
$client->message()->send('0917xxxxxxx', '<Your message here>');
Laravel Integration
If you're using Laravel, we have some conveniences set up for you. First off, you can set your
API key and sender name in your .env file., (*5)
SEMAPHORE_API_KEY=xxxxxxxx
SEMAPHORE_SENDER_NAME=xxxxxxxx
If you have package discovery disabled, make sure to register the Humans\Semaphore\Laravel\ServiceProvider in your app.php., (*6)
Send a message
You can use the Semaphore facade provided by the package., (*7)
use Humans\Semaphore\Laravel\Facades\Semaphore;
Semaphore::message()->send(
'0917xxxxxxx',
'<Your message here>'
);
Using Notifications
If you want to use Laravel's Notification features, this package provides a SemaphoreChannel and
SemaphoreMessage class., (*8)
In your notifiable class, add a routeNotificationForSempahore method and use the database column that
holds the mobile number., (*9)
class User {
use Notifiable;
// ...
public function routeNotificationForSemaphore()
{
return $this->mobile_number;
}
}
Using Notifications
use Humans\Semaphore\Laravel\Contracts\UsesSemaphore;
class Welcome extends Notification implements UsesSemaphore
{
public function via($notifiable): array
{
return [SemaphoreChannel::class];
}
public function toSemaphore($notifiable): SemaphoreMessage
{
return (new SemaphoreMessage)
->message('<Your message here>');
}
}
User::first()->notify(new Welcome);
Using on-demand Notifiables
In the case where you need to send a message but you don't need a model, this package also supports
Laravel's on-demand notifications., (*10)
use Humans\Semaphore\Laravel\SemaphoreChannel;use Illuminate\Support\Facades\Notification;
Notification::route(SemaphoreChannel::class, '0917xxxxxxx')->notify(new Welcome);