Skip to content

zingimmick/laravel-sms

Repository files navigation

Laravel Sms

Tests Code Coverage Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality StyleCI Shield Code Climate FOSSA Status

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

Requirements

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