群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

news2024/12/26 19:21:46

一、腾讯云短信工厂开发

        1、添加框架对应的SDK

composer require tencentcloud/tencentcloud-sdk-php

        2、添加腾讯云工厂

                在根目录下extend文件夹下Sms文件夹下channel文件夹下,创建腾讯云短信发送工厂并命名为TencentSmsSender。记住,一定要在腾讯云短信发送工厂类名后面去实现短信发送工厂。

<?php
/**
 * 腾讯云短信发送
 * User: 龙哥 三年风水
 * Date: 2024/12/1/0001
 * Time: 16:51
 */
namespace Sms\channel;
use Error\BaseError;
use Sms\SmsSenderInterface;
use TencentCloud\Common\Credential;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Sms\V20190711\Models\SendSmsRequest;
use TencentCloud\Sms\V20190711\SmsClient;

class TencentSmsSender implements SmsSenderInterface
{
    protected static $signName = ""; //签名
    protected static $appId = ""; //APPid
    protected static $smsClient = null; //客户端

    public function __construct($param){
        self::$signName = $param['sign_name'];
        self::$appId = $param['app_id'];
        $cred = new Credential($param['access_key_id'],$param['access_key_secret']);
        $httpProfile = new HttpProfile();
        $httpProfile->setEndpoint("sms.tencentcloudapi.com");
        $clientProfile = new ClientProfile();
        $clientProfile->setHttpProfile($httpProfile);
        self::$smsClient = new SmsClient($cred, "ap-nanjing", $clientProfile);
    }

    /**
     * 单条短信发送
     * 内部json处理过
     * User: 龙哥·三年风水
     * Date: 2024/12/1/0001
     * Time: 15:52
     * @ param $mobile 要发送的对象
     * @ param $templateCode 模板编号
     * @ param $templateParam 模板对应参数
     * @ param string $signName 签名(如果需要采用不同的签名才需要传参)
     * @ return mixed
     */
    public static function send($mobile, $templateCode, $templateParam, $signName = '')
    {
        try {
            if(empty($mobile))throw new BaseError('手机号参数必须传',50000,200);
            if(is_array($mobile) && count($mobile) >= 0)throw new BaseError('手机号参数只能是字符串方式',50000,200);
            $req = new SendSmsRequest();
            $req->SmsSdkAppid = self::$appId;
            $req->Sign = empty($signName) ? self::$signName : $signName;
            $req->TemplateID = $templateCode;
            $req->TemplateParamSet = $templateParam;
            $req->PhoneNumberSet = array("+86".$mobile);
            $res = self::$smsClient->SendSms($req);
            if($res->SendStatusSet[0]->Code == "Ok")return true;
        }catch(TencentCloudSDKException $e) {
            throw new BaseError('发送失败',50000,200);
        }
    }

    /**
     * 批量短信发送
     * 内部json处理过,单个模板,单个签名
     * User: 龙哥·三年风水
     * Date: 2024/12/2
     * Time: 13:42
     * @ param $mobiles 要发送的对象,数组形式
     * @ param $templateCode 要发送的模板
     * @ param $templateParam 要发送的参数
     * @ param string $signName 签名(如果需要采用不同的签名才需要传参)
     * @ return mixed
     */
    public static function batchSend($mobiles, $templateCode, $templateParam, $signName = '')
    {
        try {
            if(!is_array($mobiles) || count($mobiles) == 0)throw new BaseError("批量发送,手机号码必须是数组",50000,200);
            $phoneNumbers = [];
            for($i = 0; $i < count($mobiles); $i++) {
                array_push($phoneNumbers, '+86'.$mobiles[$i]);
            }
            $req = new SendSmsRequest();
            $req->SmsSdkAppid = self::$appId;
            $req->Sign = empty($signName) ? self::$signName : $signName;
            $req->TemplateID = $templateCode;
            $req->TemplateParamSet = $templateParam;
            $req->PhoneNumberSet = $phoneNumbers;
            $res = self::$smsClient->SendSms($req);
            if($res->SendStatusSet[0]->Code == "Ok")return true;
        }catch(TencentCloudSDKException $e) {
            throw new BaseError('发送失败',50000,200);
        }
    }
}

二、测试

        1、单条短信发送测试

<?php
namespace app\controller;
use Encipher\Encrypt;
use Sms\SmsSenderFactory;

class Index extends Emptys
{
    public function index()
    {
        $smsSender = SmsSenderFactory::create();
        $code = random_int(100000, 999999);
        $smsSender::send('15088888888','123456789',[$code.'']);
        return succ('操作成功');
    }
}

        2、批量短信发送测试

<?php
namespace app\controller;
use Encipher\Encrypt;
use Sms\SmsSenderFactory;

class Index extends Emptys
{
    public function index()
    {
        $smsSender = SmsSenderFactory::create();
        $code = random_int(100000, 999999);
        $smsSender::batchSend(['15088888888','15188888888'],'123456789',[$code.'']);
        return succ('操作成功');
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SD-WAN 2.0 在金融行业的典型应用场景

目录 全扁平化组网 场景需求 应用方案 SD-WAN 2.0 在金融行业的创新实践 SD-WAN5G提高金融行业网络接入可靠性 全扁平化组网 随着金融机构数字化转型的推进&#xff0c;机构业务的多样性、复杂性、 个性化等要求&#xff0c;对现有的金融机构网络架构与网管人员运维模式提出…

Next.js 新手容易犯的错误 | All about “use client“ (2)

在上一篇文章中&#xff08;Next.js 新手容易犯的错误 | All about "use client" (1)&#xff09;&#xff0c;我们探讨了 Next.js 中服务端组件和客户端组件的运行机制以及常见的使用误区。 这篇文章将作为续集&#xff0c;进一步分析更多开发中容易遇到的问题&…

优化SEO策略的关键在于长尾关键词的有效运用

内容概要 在数字营销的快速发展背景下&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;策略的制定显得尤为重要。而长尾关键词作为一种有效的关键词策略&#xff0c;正逐渐成为提升搜索引擎排名的重要工具。长尾关键词通常由三到四个词组成&#xff0c;具体而具有针对性&…

医学临床机器学习中算法公平性与偏差控制简析

摘要 随着医疗领域中数据的不断积累和计算能力的提升&#xff0c;临床机器学习技术发展迅速&#xff0c;但算法不公平性和偏差问题凸显。本文深入探讨了临床机器学习算法公平性的重要性、概念与定义、在临床应用中的影响、偏差来源、降低偏差方法及提升公平性策略。通过对不同…

​​​​​​​移远通信基于高通平台发布可集成边缘计算功能的5G MBB解决方案

在5G技术与人工智能深度融合的背景下&#xff0c;各行各业正迎来前所未有的创新机遇。为了加速5G移动宽带&#xff08;MBB&#xff09;行业向智能化转型&#xff0c;并简化边缘计算应用的开发流程&#xff0c;移远通信近期隆重推出了基于骁龙5G调制解调器及射频系统打造&#x…

六、文本搜索工具(grep)和正则表达式

一、grep工具的使用 1、概念 grep&#xff1a; 是 linux 系统中的一个强大的文本搜索工具&#xff0c;可以按照 正则表达式 搜索文本&#xff0c;并把匹配到的行打印出来&#xff08;匹配到的内容标红&#xff09;。 2、语法 grep [options]…… pattern [file]…… 工作方式…

【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法

实验 3&#xff1a;集线器和交换器的区别及交换器的自学习算法 一、 实验目的 加深对集线器和交换器的区别的理解。 了解交换器的自学习算法。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、熟悉集线器和交换器的区别 (1) 第一步&#xff1a;构建网络…

linux-安全-iptables防火墙基础笔记

目录 一、 iptables链结构 五链 二、 iptables表结构 四表 三、 匹配流程 四、 语法 五、 匹配 1. 通用匹配 2. 隐含匹配 3. 显示匹配 六、 SNAT 七、 DNAT 八、 规则备份及还原 1. 备份 2. 还原 这篇将讲解iptables防火墙的基础知识 一、 iptables链结构 规则…

一个实用的端到端的深度学习库存模型

G1 文章信息 文章题为“A Practical End-to-End Inventory Management Model withDeep Learning”&#xff0c;该文于2022年发表至“MANAGEMENT SCIENCE”。文章的核心是提出了端到端的框架用于多周期库存补货问题。 2 摘要 文章研究了一个数据驱动的多周期库存补货问题&am…

<工具 Claude Desktop> 配置 MCP server 连接本地 SQLite, 本机文件夹(目录) 网络驱动器 Windows 11 系统

也是在学习中... 起因&#xff1a; 抖音博客 艾克AI分享 他的视频 #143《Claude开源MCP彻底打破AI的信息孤岛》 提到: Claude开源的MCP太强了&#xff0c;视频后面是快速演示&#xff0c;反正看了好几遍也没弄明白。菜单都不一样&#xff0c;感觉用的不是同一家 Claude. 探…

交易所 Level-2 历史行情数据自动化导入攻略

用户部署完 DolphinDB 后&#xff0c;需要将历史股票数据批量导入数据库&#xff0c;再进行数据查询、计算和分析等操作。DolphinDB 开发了 ExchData 模块&#xff0c;主要用于沪深交易所 Level-2 行情原始数据的自动化导入&#xff0c;目前已支持的数据源包括&#xff1a; 沪…

matlab finv()函数解释 F分布 和 逆累积分布函数 卡方分布

1.Earths flattening 翻译并解释含义 "Earths flattening" 翻译为中文是“地球的扁率”。 含义解释&#xff1a; 地球的扁率是指地球形状偏离完美球形的程度。地球并非一个完美的球体&#xff0c;而是一个扁球体&#xff0c;即在两极略微扁平&#xff0c;赤道略微…

Istio笔记01--快速体验Istio

Istio笔记01--快速体验Istio 介绍部署与测试部署k8s安装istio测试istio 注意事项说明 介绍 Istio是当前最热门的服务网格产品&#xff0c;已经被广泛应用于各个云厂商和IT互联网公司。企业可以基于Istio轻松构建服务网格&#xff0c;在接入过程中应用代码无需更改&#xff0c;…

国家烟草局招聘信息查看

以下是官网链接&#xff1a; 国家烟草专卖局 在首页&#xff0c;鼠标移到行业资讯&#xff0c;点击人事与培训&#xff0c;即可看到相应的招聘信息了。

【SpringMVC】用户登录器项目,加法计算器项目的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;用户登录项目实现 1&#xff1a;需求 2&#xff1a;准备工作 &#xff08;1&#xf…

联通光猫DT741-csf 完全po解 改桥接

1.管理员密码破解&#xff0c;把光猫的loid pppoe用户名密码&#xff0c;各个连接vlan id记下来 打开链接 http://192.168.1.1/hidden_version_switch.html version选择Default Version&#xff0c;点击submit&#xff0c;光猫默认重启。重启后ip地址变为192.168.1.1 并且dhcp…

12月2日星期一今日早报简报微语报早读

12月2日星期一&#xff0c;农历十一月初二&#xff0c;早报#微语早读。 1、公安部&#xff1a;全国机动车所有人12月2日起均可申领电子行驶证&#xff1b; 2、2025年国考笔试开考&#xff1a;参考率约为86.7%&#xff0c;约65人录1人&#xff1b; 3、今日头条、拼多多等9款A…

机器学习概述,特征工程简述2.1——2.3

机器学习概述&#xff1a; 1.1人工智能概述 达特茅斯会议—人工智能的起点 机器学习是人工智能的一个实现途径 深度学习是机器学习的一个方法发展而来 1.1.2 机器学习和深度学习能做什么 传统预测 图像识别 自然语言处理 1.2什么是机器学习 数据 模型 预测 从历史数…

C语言(一维数组练习)

键盘录入一组数列&#xff0c;利用冒泡排序将数据由大到小排序 #include <stdio.h>int main(int argc,char *argv[]) {int i,j,tmep;int arr[10];printf("请输入10个测试整数&#xff1a;\n");int lensizeof(arr)/sizeof(arr[0]);for(i0;i<len;i){scanf(&q…

【2025最新计算机毕业设计】基于SSM+Vue中华传统文化吟诵知识学习系统

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…