CI使用阿里云短信服务

来源:互联网 发布:intouch软件下载 编辑:程序博客网 时间:2024/05/17 08:10

以前的阿里大于被整合到阿里云旗下,现在叫阿里与·云通信。现在将短信服务整合到ci框架中。

下载sdk

点击SDK及DEMO 在阿里云下载短信服务所需要的sdk,解压到ci框架application\ibraries下。如下图所示:
SDK存放位置

申请短信签名及模板

在短信服务管理控制台申请短信签名以及短信模板
申请短信签名
短信模板
添加成功后,我们需要用到的有签名名称和模板CODE
这里写图片描述
这里写图片描述

获取accessKeyID,accessKeySecret

这里写图片描述

在CI使用阿里云短信服务接口

  • 在application/config下新建sms.php文件,用于保存accessKeyID,accessKeySecret,模板CODE以及签名名称.
//sms.php//阿里云Access Key$config['accessKeyID'] = '你的阿里云access Key ID';$config['accessKeySecret'] = '你的阿里云access Key Secret';//短信模板CODE$config['code'] = array('SMS_xxxxx','SMS_xxxxx'......);//短信签名$config['sign'] = '你申请的签名名称';
  • 在application/config/config.php里将$config[‘subclass_prefix’] 设为 ‘MY_’;
    $config['subclass_prefix'] = 'MY_';
  • 在application/core下新建MY_Controller类.代码如下:
//MY_Controller.php<?phpini_set("display_errors", "on");class MY_Controller extends CI_Controller{    function __construct()    {        parent::__construct();    }}/** * SMS短信发送服务 */require_once dirname(__DIR__) . '/libraries/api_sdk/vendor/autoload.php';use Aliyun\Core\Config;use Aliyun\Core\Profile\DefaultProfile;use Aliyun\Core\DefaultAcsClient;use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;// 加载区域结点配置Config::load();class Sms extends MY_Controller {    /**     * 构造器     * @param string $accessKeyId 必填,AccessKeyId     * @param string $accessKeySecret 必填,AccessKeySecret     */    public function __construct($accessKeyId, $accessKeySecret){        parent::__construct();        // 短信API产品名        $product = "Dysmsapi";        // 短信API产品域名        $domain = "dysmsapi.aliyuncs.com";        // 暂时不支持多Region        $region = "cn-hangzhou";        // 服务结点        $endPointName = "cn-hangzhou";        // 初始化用户Profile实例        $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);        // 增加服务结点        DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);        // 初始化AcsClient用于发起请求        $this->acsClient = new DefaultAcsClient($profile);    }    /**     * 发送短信     *     * @param string $sign <p>     * 必填, 短信签名,应严格"签名名称"填写,参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/sign">短信签名页</a>     * </p>     * @param string $code <p>     * 必填, 短信模板Code,应严格按"模板CODE"填写, 参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/template">短信模板页</a>     * (e.g. SMS_0001)     * </p>     * @param string $phone 必填, 短信接收号码 (e.g. 12345678901)     * @param array|null $param     * 选填, 假如模板中存在变量需要替换则为必填项 (e.g. Array("code"=>"12345", "product"=>"阿里通信"))     * </p>     * @param string|null $outId [optional] 选填, 发送短信流水号 (e.g. 1234)     * @return stdClass     */    public function sendSms($phone, $sign, $code, $param = null) {        // 初始化SendSmsRequest实例用于设置发送短信的参数        $request = new SendSmsRequest();        // 必填,设置雉短信接收号码        $request->setPhoneNumbers($phone);        // 必填,设置签名名称        $request->setSignName($sign);        // 必填,设置模板CODE        $request->setTemplateCode($code);        // 可选,设置模板参数        if($param) {            $request->setTemplateParam(json_encode($param));        }        // 可选,设置流水号//        if($outId) {//            $request->setOutId($outId);//        }        // 发起访问请求        $acsResponse = $this->acsClient->getAcsResponse($request);        // 打印请求结果        // var_dump($acsResponse);        return $acsResponse;    }}
  • 调用SMS
$this->config->load('sms');//引用config文件夹下sms.php中的值$sms = new Sms(    $this->config->item('accessKeyID'),    $this->config->item('accessKeySecret'));$code = $code = $this->config->item('code')[n];//n为第几个模板CODE,参照sms.php中的配置$response = $sms->sendSms(    $phone, // 短信接收者    $this->config->item('sign'), // 短信签名    $code, // 短信模板编号    array('name'=>'xxx','code'=>'1234')//短信模板中的变量,name以及code为变量名);if($response->Code == 'OK'){    /**发送成功后的操作**/}

【完】

原创粉丝点击