1. 程式人生 > >thinkphp5 阿裏雲短信 發送多參數的短信

thinkphp5 阿裏雲短信 發送多參數的短信

官網下載 modified 數據信息 不支持 設置 根目錄 驗證 信息 time

有的朋友用阿裏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頁面的話,就是把你需要的數據信息傳遞到後臺就可以了,要電話傳電話,要地址傳地址。

thinkphp5 阿裏雲短信 發送多參數的短信