magein / laravel-sms
laravel框架扩展的短信功能
dev-master
2022-06-21 06:24 UTC
Requires
- php: ^7.4|^8.0
- ext-json: *
- alibabacloud/darabonba-openapi: ~0.2.5
- alibabacloud/dysmsapi-20170525: 2.0.9
- laravel/framework: ~8.54
- magein/tools: *@dev
This package is auto-updated.
Last update: 2024-12-21 12:11:39 UTC
README
简介
laravel项目中使用的短信平台
已经集成的运营商
- 阿里云
安装
composer require magein/laravel-sms:*@dev -vvv -o
注册服务提供者
在config/app.php中注册服务提供者,并且添加Sms的facades
$providers=[ // 此处省略其他的服务提供者 Magein\Sms\SmsServiceProvider::class ];
发送 && 验证
// 跨域问题请在config/cors.php中添加 [ 'paths' => ['api/*', 'admin/*', 'view/*', 'sms/*'], ] // 发送验证码 Magein\Sms\Facades\Sms::code($phone); Magein\Sms\Facades\Sms::code($phone,\Magein\Sms\Lib\SmsCode::SCENE_LOGIN); Magein\Sms\Facades\Sms::code($phone,\Magein\Sms\Lib\SmsCode::SCENE_REGISTER); Magein\Sms\Facades\Sms::code($phone,\Magein\Sms\Lib\SmsCode::SCENE_FINDPASS); // 发送短信 手机号码 短信内容 内容里面的变量 Magein\Sms\Facades\Sms::send($phone,$message,$replace); // 指定平台,平台需要继承 \Magein\Sms\Lib\Platform\SmsPlatform 抽象类 Magein\Sms\Facades\Sms::platform(\Magein\Sms\Lib\Platform\AliPlatform::class)->send(); // 不传递参数将从自动使用request()->input('phone');request()->input('code') Magein\Sms\Facades\Sms::validate(); // 传递场景值(login、register、findPass)等场景,phone、code自动获取 Magein\Sms\Facades\Sms::validate($scene); // 传递全部参数 Magein\Sms\Facades\Sms::validate($scene,$phone,$code);
配置文件
src/Config.php中提供了配置文件,需要修改可以在项目的config目录下新增sms.php
return [ 'default' => [ // 使用的驱动,支持 db、redis、session,默认db 'driver' => 'db', // 发送短信使用的平台 'platform' => \Magein\Sms\Lib\Platform\AliPlatform::class, // 短信签名 'signature' => '', ], /** * 阿里云的配置 */ 'ali' => [ // 平台名称 'name' => 'ali', 'access_key_id' => '', 'access_key_secret' => '', 'endpoint' => '', // 签名 'signature' => '', // 模板列表 'template' => [ // key是模板编号 value是模板中的变量 'SMS_205407022' => ['code'], 'SMS_235812009' => ['name', 'account'] ], // 发送验证码使用的模板 'code' => 'SMS_205407022', ], ]
api请求发送验证码
后端无需实现此接口,注册服务提供者后,会自动调用src/Router路由文件
request
{
url:"http://host.com/sms/code",
method:"post",
data:{
phone:"",
code:'',
}
}
response
{
code:0,
msg:'发送成功',
data:null
}
批量发送
今天大部分运营商都提供了批量发送的接口,项目中不提供批量发送的接口
实现:
- 创建任务,包含任务名称,短信内容、发送时间、目标号码
- 开启定时任务检测是否有批量发送的内容
- 加入到队列中
- 发送结果可监控(在项目中,而不是去登录运营商平台)
提供的函数
// 提取手机号码,可以传递字符串,可以传递一个文件 readPhoneNumbers($filepath);