This is an unofficial integration of the php-ovh-sms library for Laravel 5.
- Original PHP OVH SMS library
- Plans & pricing (20 free credits) on the official site
- Getting credentials on the OVH Api Explorer
Require this package with composer:
composer require akibatech/laravel-ovh-sms
After updating composer, add the ServiceProvider to the providers array in config/app.php:
Akibatech\Ovhsms\ServiceProvider::class,
If you want to use the Facade for rapid message sending, you can add this line to your config/app.php in the aliases section:
'Ovhsms' => Akibatech\Ovhsms\Facade::class,
Then, you should publish the laravel-ovh-sms to your config folder with the following command.
php artisan vendor:publish --provider="Akibatech\Ovhsms\ServiceProvider"
Send a message (using Facade) anywhere in your app:
Ovhsms::sendMessage('+33611223344', 'Hello!');
Send a message in a controller using DI:
public function myControllerAction(Akibatech\Ovhsms\OvhSms $client)
{
$client->sendMessage('+33611223344', 'Hello!');
}
This package give you an access to a ready to use Ovh\Sms\SmsApi instance with your configured credentials and your default sms account (if present).
It also offer some helpers over the original Api.
$client = app('ovhsms');
// Prepare a new SMS instance and return it.
$sms = $client->newMessage('the phone number');
$sms->send('Hi!');
// Same as above but the SMS is marked as a marketing message.
$sms = $client->newMarketingMessage($phone); // Alias of newMessage($phone, true);
$sms->send('Hello!');
// Attach many receivers
$sms = $client->newMessage(['phone1', 'phone2'], ...);
$sms->send('Hi guys!');
// Send directly the message
$client->sendMessage($phone, 'Hello!');
// Or
$client->sendMarketingMessage($phone, 'Super price this sunday!');
If you don't want to use ready-to-use helpers, you can follow the original workflow. Here's an example:
// Retrieve OVH SMS instance
$ovhsms = app('ovhsms'); // Or Ovhsms::getClient();
// Get available SMS accounts
$accounts = $ovhsms->getAccounts();
// Set the account you will use
$ovhsms->setAccount($accounts[0]);
// Create a new message that will allow the recipient to answer (to FR receipients only)
$sms = $ovh->createMessage(true);
$sms->addReceiver("+33601020304");
$sms->setIsMarketing(false);
// Plan to send it in the future
$sms->setDeliveryDate(new DateTime("2018-02-25 18:40:00"));
$sms->send("Hello world!");
This package can be used as a driver for Laravel Notifications (Laravel >= 5.3).
Here's a simple notification example.
namespace App\Notifications;
use Akibatech\Ovhsms\Notifications\OvhSmsChannel;
use Akibatech\Ovhsms\Notifications\OvhSmsMessage;
use Illuminate\Notifications\Notification;
class ExampleNotification extends Notification
{
/**
* Notification via OvhSmsChannel.
*/
public function via($notifiable)
{
return [OvhSmsChannel::class];
}
/**
* Your notification must implements "toOvh()"
*/
public function toOvh($notifiable)
{
return (new OvhSmsMessage('A new invoice was paid! Amount: $9.00'));
}
}
Also, your Notifiable model must implements routeNotificationForOvh().
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* Returns the user's phone number.
*/
public function routeNotificationForOvh()
{
return $this->phone; // Ex: +33611223344
}
}
Nice, you're ready to use the new Laravel Notifications system.
You can get your credentials from the official API Explorer site at OVH.
Once your credentials in hands, you need to put them in config/laravel-ovh-sms.php.
For convenience, you can put them in your .env file.
Config keys are:
- OVHSMS_APP_KEY => your application key
- OVHSMS_APP_SECRET => your application secret
- OVHSMS_CONSUMER_KEY => your consumer key
- OVHSMS_ENDPOINT => your endpoint (defaults to ovh-eu)
Optional keys:
- OVHSMS_ACCOUNT => your sms account ID (formatted like "sms-LLXXXXX-X")
- OVHSMS_USER_LOGIN => your API user ID
- OVHSMS_SENDER => phone number or alphanumeric sender designation
Issues related to ovh/php-ovh-sms should be posted on its own repo.
For this Laravel package, feel free to post your issues in the issues section.
MIT