有的朋友用阿里oss的時候可能會發送多參數的短信,php
例如短信模版是 您好${code1},收到您的聯繫方式${code2},您的地址爲${code3},咱們會盡快派送。前端
相似於這樣的多參數模版,首先第一關,多是參數過長,怎麼辦,直接去阿里申請售後就能夠了,和他們反饋一下,而後他們會給你把字數限制解除,而後你就能夠傳遞超過20個字的內容了。thinkphp
這一步完事,下一步就是接入阿里oss了,首先下載阿里oss的 類包了,去阿里官網下載就能夠了,我這裏整合的是thinkphp5.下載完成後具體步驟以下json
1.把下載的包裏的api_sdk複製出來,粘貼到框架的extend的目錄下,以下圖api
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阿弎 <1500226117@qq.com> * +---------------------------------------------------------------------- */ 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裏是如何調用這個方法的吧app
$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頁面的話,就是把你須要的數據信息傳遞到後臺就能夠了,要電話傳電話,要地址傳地址。dom