当前位置: 首页 > 后端技术 > PHP

禅道集成腾讯云短信

时间:2023-03-29 22:44:44 PHP

后台短信作为验证手机有效身份的手段之一,同时也承担关键信息的提醒。作为消息系统显示端最重要的接入端,它的重要性不言而喻。笔者在中秋假期研究了几大短信平台,选择了禅道整合腾讯云短信进行综合展示。与阿里云短信相比,选择腾讯云短信有明显的优势:注册时腾讯云送200条免费短信,阿里云没有个人用户。购买1000条,同时每1000条限时短信购买100条限时短信。阿里没有短信申请签名。腾讯云个人账号可以支持实名,也可以支持网站、APP、小程序和公众号,也就是说可以和你聊天个人账号创建的网站和公众号同名,但是阿里巴巴云不工作。个人账号的短信签名必须与真实姓名一致。与腾讯短信相比,非常人性化。申请模板,阿里的审核严格很多,申请短信模板被拒了无数次。与腾讯短信相比,更加宽松,但多个变量添加的总字数有限。超过则发送失败。查文档没有明确答案,就抓蚂蚁了。数了半天,屏幕上大概有12个字,方便开发集成。腾讯云除了提供传统的SDK,还支持云函数,接入更方便,开发文档也写的比较友好。阿里云只支持SDK接入,文档版本比较混乱,不太友好。最终让我放弃阿里云的是因为阿里云莫名其妙屏蔽了我的24小时短信功能(就是整个控制台点了短信服务告诉我没开通。。。居然开通了),又让客服让我清了缓存,然后就什么都没做。我睡了一夜好觉后醒来。环境PHP7.2.34Apachehttpd2.4Mysql5.7.33禅道开源版15.4参考https://cloud.tencent.com/doc...申请签名和申请模板登录腾讯云控制台,输入短信控制台,按照流程申请签名和模板。两者都必须申请安装SDK1和安装Composer。Windows环境:请到Composer官网下载安装包并安装。地址是https://getcomposer.org/downl…。Linux环境:请运行代码curl-sShttps://getcomposer.org/installer|phpsudomvcomposer.phar/usr/local/bin/composer2、获取SDK文件,在禅道的www目录下新建sms目录。从命令行切换到www/sms目录,然后运行命令composerrequiretencentcloud/tencentcloud-sdk-php。运行成功后会生成一个vendor文件夹和几个文件。禅道短信类写在模块目录下,会新建一个短信文件。文件夹,按照禅道的结构,新建lang文件夹和lang文件,以及model文件1、zh-cn.phpsms->secretId='';$lang->sms->secretKey='';/*短信应用ID:短信SdkAppId为在【短信控制台】添加应用后实际生成的SdkAppId,例如:1400006666*/$lang->sms->SdkAppId='';/*短信签名内容:使用UTF-8编码,必须填写认可的签名,签名信息可以登录【短信控制台】查看*/$lang->sms->SignName='';/*TemplateID:必须填写审核通过的模板ID。模板ID可以在【短信控制台】查看*/$??lang->sms->TemplateIdList['mb1']='';$lang->sms->TemplateIdList['mb2']='';$lang->sms->TemplateIdList['mb3']='';使用secretId和secretKey登录腾讯云控制台,点击右上角你的头像,选择“权限管理”,选择API密钥管理,生成你的secretId和secretKeySdkAppId登录腾讯云控制台,进入短信控制台,选择应用列表,生成你的SdkAppIdSignName,登录腾讯云控制台,进入短信控制台,选择签名管理,勾选你的签名,是内容栏,不要进入IDTemplateIdList登录腾讯中云端控制台,进入短信控制台,选择文本模板管理,取出你要使用的模板ID。如果不止一个,可以自定义key,value必须填写模板ID2,model.phplang->sms->secretId,$this->lang->sms->密钥);//$cred=newCredential(getenv("TENCENTCLOUD_SECRET_ID"),getenv("TENCENTCLOUD_SECRET_KEY"));//实例化一个http选项,可选,无特殊要求则跳过$httpProfile=newHttpProfile();//配置代理//$httpProfile->setProxy("https://ip:port");$httpProfile->setReqMethod("GET");//post请求(默认为post请求)$httpProfile->setReqTimeout(30);//请求超时时间,单位秒(默认60秒)$httpProfile->setEndpoint("sms.tencentcloudapi.com");//指定访问区域的域名(默认就近访问)//实例化一个客户端选项,可选,无特殊要求跳过//$clientProfile=newClientProfile();//$clientProfile->setSignMethod("TC3-HMAC-SHA256");//指定签名算法(默认HmacSHA256)//$clientProfile->setHttpProfile($httpProfile);//实例化client对象请求商品(以sms为例),clientProfile可选//第二个参数是区域信息,可以直接填字符串ap-guangzhou,也可以参考预设常量$client=newSmsClient($cred,"ap-guangzhou",$clientProfile);//实例化一个sms发送短信请求对象,每个接口都会对应一个请求对象$req=newSendSmsRequest();/*填写请求参数,其中请求对象的成员变量为对应接口的入参*可以通过官网的接口文档查看请求参数的定义或者跳转到请求的定义对象*基本类型设置:*帮助链接:*短信控制台:https://console.cloud.tencent.com/smsv2*短信助手:https://cloud.tencent.com/document/product/382/3773*//*短信应用ID:短信SdkAppId为在【短信控制台】添加应用后实际生成的SdkAppId,例如1400006666*/$req->SmsSdkAppId=$this->lang->sms->SdkAppId;/*短信签名内容:使用UTF-8编码,认可的签名必须填写,签名信息可以在【短信控制台】查看*/$req->SignName=$this->lang->sms->SignName;/*短信验证码分机号:默认不激活,如需激活请联系【短信帮手】*/$req->ExtendCode="";/*发手机号码,采用E.164标准,+[国家或地区代码][手机号码]*例如:+8613711112222,前面有个+号,86是国家代码,13711112222是手机号,手机号不超过200个*/$req->PhoneNumberSet=$arr1;/*国际/港澳台短信SenderId:国内短信填空,默认不激活,需要激活请联系【短信帮手】*/$req->SenderId="";/*用户会话内容:可以携带用户端ID等上下文信息,服务器会原样返回*/$req->SessionContext="";/*模板ID:必须填写审核通过的模板ID。您可以登录【短信控制台】查看模板ID*/$req->TemplateId="$TemplateId";/*模板参数:如果没有模板参数,则设置为空*/$req->TemplateParamSet=$arr2;//调用SendSms方法通过客户端对象发起请求。注意请求方法名对应请求对象//返回的resp是SendSmsResponse类的实例,对应请求对象$resp=$client->SendSms($req);//输出一个json格式的字符串返回包//print_r($resp->toJsonString());//也可以检索单个值。//可以通过官网接口文档查看返回字段的定义或者跳转到响应对象的定义//print_r($resp->TotalCount);返回$resp;}}$arr1是电话号码数组,可以是多个$arr2是模板对应的变量数组,可以有多个$TemplateId是当前使用的模板ID,在任意控件中使用禅道短信类文件$this->loadModel('sms');然后构造短信的传入参数,使用短信类发送短信$arr1=array();$arr2=array();//输入手机号码,如果每行一个号码,构造多行$arr1[]="手机号码";//如果这次使用如果模板ID有多个可变参数,变量赋值要早多行$arr2[]="variable1";$arr2[]="variable2";$arr2[]="variable3"//传入$arr1和$arr2两个数组,同时传入发送短信的模板ID$this->sms->sendmessage($arr1,$arr2,$this->lang->sms->TemplateIdList['mb1']);至此,如何在禅道中集成腾讯云短信就完成了!

最新推荐
猜你喜欢