thinkphp5 阿里云短信 发送多参数的短信

有的朋友用阿里oss的时候可能会发送多参数的短信,

例如短信模版是  您好${code1},收到您的联系方式${code2},您的地址为${code3},我们会尽快派送。

类似于这样的多参数模版,首先第一关,可能是参数过长,怎么办,直接去阿里申请售后就可以了,和他们反馈一下,然后他们会给你把字数限制解除,然后你就可以传递超过20个字的内容了。

这一步完事,下一步就是接入阿里oss了,首先下载阿里oss的 类包了,去阿里官网下载就可以了,我这里整合的是thinkphp5.下载完成后具体步骤如下

1.把下载的包里的api_sdk复制出来,粘贴到框架的extend的目录下,如下图

2.然后是控制器这块,我的调用在index模块下的index中,现在我新建一个commoncontroller,里面写阿里的官方方法,代码如下:

<?php
/*
* @Author: Asan阿弎
* @Date:   2016-12-15 17:20:54
* @Last Modified by:   Asan阿弎
* @Last Modified time: 2016-12-24 22:13:09
* +----------------------------------------------------------------------
* | LarryBlogCMS [ AsanCMS网站内容管理系统 ]
* | Copyright (c) 2016-2017 http://www.ggasan.com All rights reserved.
* | Licensed ( http://www.ggasan.com/ )
* | Author: Asan阿弎 <[email protected]>
* +----------------------------------------------------------------------
*/
namespace app\index\controller;

use think\Controller;
use think\Session;
use app\admin\model\Userinfo;
use think\Db;

use Aliyun\Core\Config as Alconfig;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\SendBatchSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

class Common extends Controller
{

    /**
     * 默认前端继承
     */
    public function _initialize()
    {

     //此处忽略 这里和短信无关
    }

    public static function user()
    {
       //此处无关,请忽略
    }

   //阿里短信函数,$mobile为手机号码,$code为自定义随机数   这个是传递一个参数的
    public function sendMsg($mobile,$code){

        //这里的路径EXTEND_PATH就是指tp5根目录下的extend目录,系统自带常量。alisms为我们复制api_sdk过来后更改的目录名称
        require_once EXTEND_PATH.‘alisms/vendor/autoload.php‘;

        Alconfig::load();             //加载区域结点配置

        $accessKeyId = ‘去你的阿里云控制面板找下哈‘;  //阿里云短信获取的accessKeyId

        $accessKeySecret = ‘再去你的控制面板找下吧‘;    //阿里云短信获取的accessKeySecret

        //这个个是审核过的模板内容中的变量赋值,记住数组中字符串code要和模板内容中的保持一致
        //比如我们模板中的内容为:你的验证码为:${code},该验证码5分钟内有效,请勿泄漏!
        $templateParam = array("code"=>$code);           //模板变量替换

        $signName = ‘这个也是面板里找哦‘; //这个是短信签名,要审核通过

        $templateCode = ‘这个同样面板里面找哦‘;   //短信模板ID,记得要审核通过的

        //短信API产品名(短信产品名固定,无需修改)
        $product = "Dysmsapi";
        //短信API产品域名(接口地址固定,无需修改)
        $domain = "dysmsapi.aliyuncs.com";
        //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
        $region = "cn-hangzhou";

        // 初始化用户Profile实例
        $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
        // 增加服务结点
        DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
        // 初始化AcsClient用于发起请求
        $acsClient= new DefaultAcsClient($profile);

        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new SendSmsRequest();
        // 必填,设置雉短信接收号码
        $request->setPhoneNumbers($mobile);

        // 必填,设置签名名称
        $request->setSignName($signName);

        // 必填,设置模板CODE
        $request->setTemplateCode($templateCode);

        // 可选,设置模板参数
        if($templateParam) {
            $request->setTemplateParam(json_encode($templateParam));
        }

        //发起访问请求
        $acsResponse = $acsClient->getAcsResponse($request);

        //返回请求结果
        $result = json_decode(json_encode($acsResponse),true);
        return $result;
    }

   //阿里短信函数,$mobile为手机号码,$code为自定义随机数     这个是传递多个参数的
    public function sendMsg2($mobile,$code){

        //这里的路径EXTEND_PATH就是指tp5根目录下的extend目录,系统自带常量。alisms为我们复制api_sdk过来后更改的目录名称
        require_once EXTEND_PATH.‘alisms/vendor/autoload.php‘;

        Alconfig::load();             //加载区域结点配置

        $accessKeyId = ‘你懂的 ,你的面板里找‘;  //阿里云短信获取的accessKeyId

        $accessKeySecret = ‘你还是懂的,面板里找‘;    //阿里云短信获取的accessKeySecret

        //这个个是审核过的模板内容中的变量赋值,记住数组中字符串code要和模板内容中的保持一致
        //比如我们模板中的内容为:你的验证码为:${code},该验证码5分钟内有效,请勿泄漏!
        $templateParam = array("code"=>$code);           //模板变量替换

        $signName = ‘我相信你懂,面板里找‘; //这个是短信签名,要审核通过

      $templateCode = ‘涛声依旧,面板里找‘;   //短信模板ID,记得要审核通过的

        //短信API产品名(短信产品名固定,无需修改)
        $product = "Dysmsapi";
        //短信API产品域名(接口地址固定,无需修改)
        $domain = "dysmsapi.aliyuncs.com";
        //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
        $region = "cn-hangzhou";

        // 初始化用户Profile实例
        $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
        // 增加服务结点
        DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
        // 初始化AcsClient用于发起请求
        $acsClient= new DefaultAcsClient($profile);

        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new SendSmsRequest();
        // 必填,设置雉短信接收号码
        $request->setPhoneNumbers($mobile);

        // 必填,设置签名名称
        $request->setSignName($signName);

        // 必填,设置模板CODE
        $request->setTemplateCode($templateCode);

        // 可选,设置模板参数
        //if($templateParam) {
        //    $request->setTemplateParam(json_encode($templateParam));
       // }

      //这里就是传递多个参数的地方喽 按照我的写法写哦,别写错哦
        $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
            "consignee"=>$templateParam[‘code‘][‘consignee‘],
            "number"=>$templateParam[‘code‘][‘number‘],
          "code1"=>$templateParam[‘code‘][‘code1‘],
          "code2"=>$templateParam[‘code‘][‘code2‘],
          "code3"=>$templateParam[‘code‘][‘code3‘],
          "code4"=>$templateParam[‘code‘][‘code4‘],
        ), JSON_UNESCAPED_UNICODE));

        //发起访问请求
        $acsResponse = $acsClient->getAcsResponse($request);

        //返回请求结果
        $result = json_decode(json_encode($acsResponse),true);
        return $result;
    }

}

3.这里完事,我们看下indexcontroller里是如何调用这个方法的吧

$rp=array("consignee"=>$_POST[‘dsname‘],"number"=>$_POST[‘dsmobile‘],"code1"=>$_POST[‘options1‘],"code2"=>$_POST[‘options2‘],"code3"=>$_POST[‘options3‘],"code4"=>$_POST[‘dsaddress‘]);
$result=$this->sendMsg2(‘133123123123‘,$rp);

4.懂了吧,其他的就不用我说了吧,就这些了 ,有问题群里找我吧。至于view页面的话,就是把你需要的数据信息传递到后台就可以了,要电话传电话,要地址传地址。

原文地址:https://www.cnblogs.com/HoverM/p/9282937.html

时间: 2024-10-07 21:33:27

thinkphp5 阿里云短信 发送多参数的短信的相关文章

django之集成阿里云通信(发送手机短信验证码)

python3 + django2.0 集成 "阿里云通信" 服务: (SDK文档地址:https://help.aliyun.com/document_detail/55491.html?spm=5176.10629532.106.3.2fe01cbeAp0iFO) 步骤1: 在阿里云 "短信服务" 中创建一个签名 步骤2: 在阿里云 "短信服务" 中创建一个短信模板 步骤3: 下载阿里云 "短信服务" SDK 步骤4: 在

4、下行短信发送WebService、下行短信发送服务 -功能详细设计 --短信平台

3.  下行短信发送WebService 开发一个WebService,供第三方系统调用,用于发送短信.WebService接收数据后,将信息存储入数据库的短信发送数据表中. WebService参数包括:应用标识.手机号码(字符串数组类型).短信内容.扩展码(3-8位数字).优先级(数字1至5).定时发送时间(可null为即时发送).发送人ID(内部机构人员管理系统的ID).发送人全路径. 同时开发另一个WebService,与原有旧系统接口完全相同,用于调用旧短信平台的第三方系统无缝切换到新

阿里云 服务器 邮件发送

使用SMTP(简单邮件传输协议)发送邮件一般都是使用默认的25端口,而阿里云服务器为了安全将25端口封禁了,会出现在本机测试发送邮件功能正常,但是部署到服务器上却发送失败的情况. 解决办法是向阿里云申请解封25端口,或者更换端口,建议使用587端口(有的说465可用但经过测试不可用) using System.Configuration; using System.Collections.Specialized; using System.IO; using System.Net.Mail; p

composer阿里云短信服务不支持传参为数值

composer 阿里云短信服务使用 xuying/aliyun_mns /** * TODO SMS SERVICE * @param $tmp * @param $moblie * @param $name * @param int $len * @return int */private function mns($tmp,$moblie,$name,$len=4){ $count=[]; for($i =0;$i<$len; $i++){ $count[] =rand(1, 9); }

短信发送接收装置

接到Boss的命令,要求我们做一个在Android手机上运行的小的例子,实现的功能是:通过一个手机向另外一个手机发送数据,另外一个Android手机接收到后通过USB接口输出! 该装置主要由三个步骤组成: 1.发信息 2.接收信息并读取信息内容 3.从 USB 口输出(这里暂时没实现) 就是为了实现一个短信发送,并接收短信内容输出的装置 MainActivity.java 类实现的是发送信息的功能 1 package com.example.android_phone; 2 3 import j

短信发送的流程,硬编码在了服务方法里面,优化方案

短信发送的流程,直接硬编码在服务方法里面,如何优化? 需要建立一个系统的短信发送表,定义短信发送模板: 通过批处理,比如spring batch+quartz,去扫描这个表,来统一进行短信发送处理: 而不是各自service,直接发送短信,这样既造成硬编码,而且又造成入口很多, 导致无法管理,无法追溯短信发送的记录,以及是否发送成功. 版权声明:本文为博主原创文章,未经博主允许不得转载.

阿里云邮件推送服务

提起邮件服务,最早之前一般自建邮件服务器,需要硬软件和运维的支持,稳定性也难保证,随着云服务的普及邮件推送功能的服务化是趋势,也省钱省事省心. 最早开始用过搜狐邮件服务,阿里云生态现在基本都出现了,我们来尝试一下阿里云的邮件推送服务: 一.阿里云控制台操作 首先在阿里云邮件推送控制台添加域名,然后在自己的dns服务器中添加如下的解析(根据控制台中的“配置”): 一个主机名为aliyundm的TXT记录,用于验证域名所有权 一个主机名为空.值为v=spf1 include:spf1.dm.aliy

发送短信验证码-node+阿里云短信

一.准备工作 前端: 表单 提交方式--- get .post 整体提交 ajax提交 表单验证 正则表达式---不轻易自己写正则,不是不写,一定要考虑好兼容性(全面性)---- 提示信息的选择性 图形验证码 后端进行提供的一张图片,并且这张图片会对应一个字段,这个字段传递给前端,前端负责校验即可 短信验证码 判断是不是手机号 如果是,那么就发送此手机号給后端,后端继续进行操作 第三方登录 qq登录,微信登录,微博登录 appid appsecret appkey 后端: get url.par

使用阿里云的短信服务发送短信

在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于HTTP协议做的一个数据发送而已,接触阿里云的短信服务器后,发现阿里云还增加了非常多的参数,其中包括一些秘钥和签名的内容.短信发送由于比较敏感原因,大多数应用场景是验证码或者一些固定的信息提醒,因此厂商都要求客户按预定的模板来发送,这样限制了短信的应用场景,只能根据业务进行消息定制了.本篇随笔主要介绍阿里云的短信服务