PHPackages                             charles/laravel-sms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. charles/laravel-sms

ActiveLibrary

charles/laravel-sms
===================

charles laravel sms base overtrue's easy-sms

00PHPCI failing

Since Jun 28Pushed 5y ago1 watchersCompare

[ Source](https://github.com/watchern/laravel-sms)[ Packagist](https://packagist.org/packages/charles/laravel-sms)[ RSS](/packages/charles-laravel-sms/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel Sms
===========

[](#laravel-sms)

Laravel 贴合实际需求同时满足多种通道的短信发送组件

Featrue
-------

[](#featrue)

基于业务需求在 [overtrue/easy-sms](https://github.com/overtrue/easy-sms/) 基础进行扩展开发，主要实现如下目标：

1. 支持短信验证码直接在 config 中配置模板ID
2. 支持短信验证码自定义长度
3. 支持短信验证码有效分钟，默认5分钟
4. 支持短信验证码重试次数，防止用户意外输错验证码导致需要再次发送验证码的问题。
5. 支持短信验证码未验证时，用户再次请求验证码，在有效分钟内验证码保持一致。
6. 集成短信发送路由，支持 web 和 api 发送方式。
7. 支持验证码调试，debug 模式下可直接查询手机号目前有效的验证码
8. 支持短信验证码发送记录保存到数据库
9. 短信发送频率限制，同一 IP 限定时间内请求次数

TODO：
-----

[](#todo)

1. 支持语音验证码

安装
--

[](#安装)

```
composer require charles/laravel-sms -vvv
```

低于 Laravel5.5 版本

`config/app.php` 文件中 'providers' 添加

```
Charles\Sms\ServiceProvider::class
```

`config/app.php` 文件中 'aliases' 添加

```
'Sms'=> Charles\Sms\Facade::class
```

使用
--

[](#使用)

### 发送验证码

[](#发送验证码)

1. 实现了发送短信验证码路由，支持 web 和 api ，可以自定义路由的 prefix。

```
'route' => [
        'prefix' => 'sms',
        'middleware' => ['web'],
    ],

or

'route' => [
        'prefix' => 'sms',
        'middleware' => ['api'],
    ],

```

POST请求 `http://your.domain/sms/verify-code`

参数：mobile

备注：为了开发调试方便，在 debug 模式下不会验证手机的有效性。

返回参数：

```
{
    "status": true,
    "message": "短信发送成功"
}
```

2. 如果需要自定义路由，也可以通过使用Facade发送验证码：

```
use Charles\Sms\Facade as Sms;

Sms::send(request('mobile'));
```

由于使用多网关发送，所以一条短信要支持多平台发送，每家的发送方式不一样，但是我们抽象定义了以下公用属性：

- `content` 文字内容，使用在像云片类似的以文字内容发送的平台
- `template` 模板 ID，使用在以模板ID来发送短信的平台
- `data` 模板变量，使用在以模板ID来发送短信的平台

```
use Charles\Sms\Facade as Sms;

Sms::send(request('mobile'), [
    'content'  => '您的验证码为: 83115',
    'template' => 'SMS_001',
    'data' => [
        'code' => 83115
    ],
]);
```

默认使用 `default` 中的设置来发送，如果某一条短信你想要覆盖默认的设置。在 `send` 方法中使用第三个参数即可：

```
use Charles\Sms\Facade as Sms;

Sms::send((request('mobile'), [
    'content'  => '您的验证码为: 83115',
    'template' => 'SMS_001',
    'data' => [
        'code' => 83115
    ],
], ['aliyun']); // 这里的网关配置将会覆盖全局默认
```

### 定义短信

[](#定义短信)

已**容联云通讯**为例：你可以根据发送场景的不同，定义不同的短信类，通过继承 `Overtrue\EasySms\Message` 来定义短信模型：

```
