Skip to content

shabayekdes/laravel-sms

Repository files navigation

Laravel SMS

Github Status Styleci Status Packagist version mit Packagist PHP Version Support Packagist Downloads

This is a Laravel Package for SMS Gateway Integration. Now Sending SMS is easy.

List of supported gateways:

Install

Via Composer

composer require shabayek/laravel-sms

Usage

  • Publish the config file
php artisan vendor:publish --provider="Shabayek\Sms\SmsServiceProvider"
  • Choose what gateway you would like to use for your application. Then make that as default driver so that you don't have to specify that everywhere. But, you can also use multiple gateways in a project.
'default' => 'smseg',
  • Then fill the credentials for that gateway in the drivers array.
SMS_CONNECTION=smseg
SMS_USERNAME=username
SMS_PASSWORD=password
SMS_SENDER_ID=sender
SMS_SERVICE=normal
  • Send normal sms message
use Shabayek\Sms\Facades\Sms;
    
$sms = Sms::send('0120000000', 'Hello world');
  • Send otp sms message

if you set sms service normal it's will send via sms message if you set sms service otp it's will send via sms message

use Shabayek\Sms\Facades\Sms;

$sms = Sms::sendOtp('0120000000');
  • Verify phone number
use Shabayek\Sms\Facades\Sms;

$phone = '09121234567'; // phone number
$otp = '123456'; // otp that you sent to phone
$actualOtp = '123456'; // this is the actual otp that you sent to the user

$verify = Sms::verify($phone, $otp, $actualOtp); // third params is optional with service otp
  • You can set language for the OTP sms message.

en: For English ar: For Arabic

use Shabayek\Sms\Facades\Sms;

$sms = Sms::setLanguage('ar');
        ->sendOtp('0120000000');

Adding Custom Cache Drivers

  • Writing The Driver

To create our custom sms driver, we first need to implement the Shabayek\Sms\Contracts\SmsGatewayContract contract. So, a new SMS gateway implementation might look something like this:

namespace Shabayek\Sms\Contracts;

class CustomSms implements SmsGatewayContract
{
    public function send($phone, $message): array;

    public function sendOtp($phone, $message = null);

    public function verify(string $phone, int $otp, $actualOtp = null): bool;

    public function balance() { }
}

Then, we need to add a new config for our custom sms driver. in sms config within connections key

'connections' => [
    ...
    'custom' => [
        'driver' => 'custom',
        'username' => 'username',
        'password' => 'password',
        'sender_id' => 'sender',
        'service' => 'normal',
    ],
    ...
],

we can finish our custom driver registration by calling the Sms facade's extend method:

Sms::extend('custom', function ($app) {
    return new CustomSms(config());
});

Testing

composer test

Security Vulnerabilities

If you've found a bug regarding security please mail esmail.shabayek@gmail.com instead of using the issue tracker.

License

The Laravel SMS Gateway package is open-sourced software licensed under the MIT license.