CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展

<>扩展入口文件

文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通

复制代码
namespace crmeb\services\sms;

use crmeb\basic\BaseManager;
use crmeb\services\AccessTokenServeService;
use crmeb\services\sms\storage\yihaotong;
use think\Container;
use think\facade\Config;


/**
 * Class Sms1
 * @package crmeb\services\sms
 * @mixin yihaotong
 */
class Sms extends BaseManager
{
    //...
}

<>扩展配置文件

文件目录config/sms.php

stores 内的配置可以填写也可以留空,留空的话,需要在调取服务的时候从其他地方获取;

复制代码
return [
    //默认扩展
    'default' => 'yihaotong',
    //单个手机每日发送上限
    'maxPhoneCount' => 10,
    //验证码每分钟发送上线
    'maxMinuteCount' => 20,
    //单个IP每日发送上限
    'maxIpCount' => 50,
    //驱动模式
    'stores' => [
        //一号通
        'yihaotong' => [
            'sms_account' => '',
            'sms_token' => ''
        ],
        //阿里云
        'aliyun' => [
            'sign_name' => '',
            'aliyun_AccessKeyId' => '',
            'aliyun_AccessKeySecret' => '',
            'aliyun_RegionId' => '',
        ],
        //腾讯云
        'tencent' => [
            'tencent_sms_app_id' => '',
            'tencent_sms_secret_id' => '',
            'tencent_sms_secret_key' => '',
            'tencent_sms_sign_name' => '',
            'tencent_sms_region' => '',
        ]
    ]
];

<>使用短信扩展

复制代码
use crmeb\services\sms\Sms;

$sms = new Sms();

$phone = '手机号';
$templateId = '短信模板id';
$data  = [];//短信模板变量内容

$res = $sms->send($phone, $templateId, $data = []);

if (false === $res) {
    var_dump($sms=>getError());
} else {
    //发送成功
}

<>切换其他扩展发送

复制代码
use crmeb\services\sms\Sms;

//使用腾讯云短信发送
$sms = new Sms('tencent',[
    'tencent_sms_app_id'=>'应用id',
    'tencent_sms_secret_id'=>'secret_id',
    'tencent_sms_secret_key'=>'secret_key',
    'tencent_sms_sign_name'=>'签名',
    'tencent_sms_region'=>'地域',
]);

$phone = '手机号';
$templateId = '短信模板id';
$data  = [];//短信模板变量内容

$res = $sms->send($phone, $templateId, $data = []);

if (false === $res) {
    var_dump($sms=>getError());
} else {
    //发送成功
}

<>使用内置服务发送

复制代码
use app\services\serve\ServeServices;

/** @var ServeServices  $serve */
$serve = app()->make(ServeServices::class);

//从数据库获取用户当前发送的扩展方式
$type = sys_config('sms_type', null);

$phone = '手机号';
$templateId = '短信模板id';
$data  = [];//短信模板变量内容

//发送短信
//sms()方法内部自动从配置获取参数名,根据配置情况获取配置参数
$res = $serve->sms($type)->send($phone, $templateId, $data);

if (false === $res) {
    var_dump($sms=>getError());
} else {
    //发送成功
}

<>举例增加:创蓝短信发送扩展

增加文件 crmeb\services\storage\Chuanglan.php

可以根据需求完成以下方法内的逻辑 send方法是必须要完成的

复制代码
namespace crmeb\services\sms\storage;

use crmeb\services\sms\BaseSms;
use crmeb\exceptions\AdminException;
use think\facade\Config;


/**
 * Class Chuanglan
 * @package crmeb\services\sms\storage
 */
class Chuanglan extends BaseSms
{

    //初始化
    protected function initialize(array $config = []){};

    //开通服务
    public function open(){};

    //修改签名
    public function modify(string $sign = null, string $phone, string $code){};

    //获取用户信息
    public function info(){};

    //获取短信模板
    public function temps(int $page = 0, int $limit = 10, int $type = 1){};

    //申请模版
    public function apply(string $title, string $content, int $type){};

    //申请模板记录
    public function applys(int $tempType, int $page, int $limit){};

    //f发送短信
    public function send(string $phone, string $templateId, array $data = []){};

    //发送记录
    public function record($record_id){};

}

<>使用创蓝短信扩展发送短信

复制代码
use crmeb\services\sms\Sms;

//使用创蓝驱动
$sms = new Sms('chuanglan');

$phone = '手机号';
$templateId = '短信模板id';
$data  = [];//短信模板变量内容

$res = $sms->send($phone, $templateId, $data = []);

if (false === $res) {
    var_dump($sms=>getError());
} else {
    //发送成功
}

附件:https://gitee.com/ZhongBangKeJi/CRMEB

相关推荐
星光开发者8 小时前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
专业程序开发源11 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
星夜夏空9912 小时前
网络编程(5)—— Reactor实现(v3)
服务器·网络·php
小此方15 小时前
Linux网络(二十):TCP拥塞控制与延迟应答详解:从拥塞窗口到TCP性能优化,理解TCP与UDP的效率差异
linux·网络·php
专业程序开发源16 小时前
springboot高校学生社团管理系统74810-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
AC赳赳老秦16 小时前
OpenClaw 与 FineBI 联动方案:公开数据自动采集与实时业务分析看板实践
大数据·开发语言·python·php·finebi·deepseek·openclaw
AIGC小尼16 小时前
8G 显存零基础本地部署 AI 漫剧全流程|ComfyUI+Wan2.2+FFmpeg 离线成片完整方案(含代码 / 指令 / 排坑)
人工智能·ffmpeg·php·comfyui·ai漫剧
新鲜势力呀17 小时前
PHP 文件上传系统实战:从上传卡顿到分片上传 + 秒传 + 云存储架构完整优化方案
开发语言·架构·php
专业程序开发源18 小时前
flask动漫推荐系统32319-计算机课程设计、毕业设计
java·spring boot·后端·django·flask·php·课程设计
寺中人1 天前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具