zing/laravel-sms

Provides sms notification channel for Laravel.

4.2.0 2022-01-13 09:09 UTC

README

Build Status Code Coverage Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality StyleCI Shield Code Climate 68747470733a2f2f6170702e666f7373612e636f6d2f6170692f70726f6a656374732f6769742532426769746875622e636f6d2532467a696e67696d6d69636b2532466c61726176656c2d736d732e7376673f747970653d736869656c64

Laravel Sms is used to notify via sms and send a message.

Thanks

Many thanks to:

  • JetBrains for the excellent PhpStorm IDE and providing me with an open source license to speed up the project development.

    JetBrains

Requirement

  1. PHP >= 7.2.5
  2. Composer
  3. ext-json

Installation

Composer

Execute the following command to get the latest version of the package:

composer require zing/laravel-sms

Laravel

Publish Configuration

php artisan vendor:publish --provider "Zing\LaravelSms\SmsServiceProvider"

Add Connections

This package based on overtrue/easy-sms, driver is the gateway.

Usage

Channel

Create a Notification

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Notification;

class Verification extends Notification implements ShouldQueue
{
    use Queueable;

    protected $code;

    /**
     * Verification constructor.
     *
     * @param $code
     */
    public function __construct($code)
    {
        $this->code = $code;
    }

    public function via()
    {
        return ['sms'];
    }

    public function toSms($notifiable)
    {
        return "验证码 {$this->code},您正在进行身份验证,打死也不要告诉别人哦!";
    }
}

Add notification route for sms to your notifiable

use Illuminate\Notifications\Notifiable;

class User
{
    use Notifiable;

    public function routeNotificationForSms($notification)
    {
        return $this->phone;
    }
}

Send notification

use Illuminate\Support\Facades\Notification;

$user = new User();
// use Notifiable Trait
$user->notify(new Verification('1111'));
// use Notification Facade
Notification::send($user, new Verification('1111'));

Send to anonymous notifiable

use Illuminate\Support\Facades\Notification;
use Zing\LaravelSms\SmsNumber;
use Zing\LaravelSms\Channels\SmsChannel;

// use channel class name
Notification::route(SmsChannel::class, new SmsNumber(18188888888, 86))->notify(new Verification('1111'));
// use channel alias
Notification::route('sms', new SmsNumber(18188888888, 86))->notify(new Verification('1111'));

Facade

Send Message

use Zing\LaravelSms\Facades\Sms;

// use default connection
Sms::send(18188888888, 'test message.');
// use specific connection
Sms::connection('null')->send(18188888888, 'test message.');
// or
Sms::via('null')->send(18188888888, 'test message.');

Specific usage

Use specific connection for notification

NOTE: Only support for Zing\LaravelSms\SmsMessage

use Zing\LaravelSms\SmsMessage;

public function toSms($notifiable)
{
    return (new SmsMessage())->onConnection('log');
}

Make PhoneNumber notifiable

NOTE: Only support for Zing\LaravelSms\SmsNumber

use Zing\LaravelSms\SmsNumber;

(new SmsNumber(18188888888))->notify(new Verification('1111'));

License

Laravel Sms is open-sourced software licensed under the MIT license.

FOSSA Status