thinkphp5腾讯云短信示例

Author Avatar
云璃 2018年05月25日

1. 应用根目录下使用 composer 导入腾讯云短信提供的 PHP SDK。

composer require qcloudsms/qcloudsms_php

2. 申请应用,签名,模版。
必须申请签名与模版。
申请应用:https://cloud.tencent.com/document/product/382/13445
申请签名模版:https://cloud.tencent.com/document/product/382/13481

签名可根据相关文档说明申请。
模版申请的为标准验证码模版。
模版:{1}为您的登录验证码,请于 {2} 分钟内填写。如非本人操作,请忽略本短信。
若想一次通过本示例发送短信成功,请申请相同模版,以免导致发送失败。

签名和模版必须全部通过。
测试前请在腾讯云短信控制台添加你的手机为白名单。

3. 单发测试。

<?php
namespace app\index\controller;

use Qcloud\Sms\SmsSingleSender;

class Index
{
    public function smsSend(){

        // $appid $appkey $templateId $smsSign为官方demo所带,请修改为你自己的
        // 短信应用SDK AppID
        $appid = 1400009099;

        // 短信应用SDK AppKey
        $appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad";

        // 你的手机号码。
        $phoneNumber = "21212313123";

        // 短信模板ID,需要在短信应用中申请
        $templateId = 7839;  // NOTE: 这里的模板ID`7839`只是一个示例,真实的模板ID需要在短信控制台中申请

        // 签名
        $smsSign = "腾讯云"; // NOTE: 这里的签名只是示例,请使用真实的已申请的签名,签名参数使用的是`签名内容`,而不是`签名ID`

        // 单发短信
        try {
            $ssender = new SmsSingleSender($appid, $appkey);
            $result = $ssender->send(0, "86", $phoneNumber,
                "123456为您的登录验证码,请于5分钟内填写。如非本人操作,请忽略本短信。", "", "");
            $rsp = json_decode($result);
            echo $result;
        } catch(\Exception $e) {
            echo var_dump($e);
        }

                //暂停3秒
        sleep(3);

        // 指定模板ID单发短信
        try {
            $ssender = new SmsSingleSender($appid, $appkey);
            $params = ["654321", "5"];
            $result = $ssender->sendWithParam("86", $phoneNumber, $templateId,
                $params, $smsSign, "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信
            $rsp = json_decode($result);
            echo $result;
        } catch(\Exception $e) {
            echo var_dump($e);
        }
    }
}

$appid $appkey $templateId $smsSign 为官方 demo 所带,请修改为你自己的。

运行后,正常情况下会收到两条短信。

4. 群发测试。

<?php
namespace app\index\controller;

use Qcloud\Sms\SmsMultiSender;

class Index
{
    public function smsMulti(){

        // $appid $appkey $templateId $smsSign为官方demo所带,请修改为你自己的
        // 短信应用SDK AppID
        $appid = 1400009099; // 1400开头

        // 短信应用SDK AppKey
        $appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad";

        // 需要发送短信的手机号码
        $phoneNumbers = ["21212313123", "12345678902", "12345678903"];

        // 短信模板ID,需要在短信应用中申请
        $templateId = 7839;  // NOTE: 这里的模板ID`7839`只是一个示例,真实的模板ID需要在短信控制台中申请

        // 签名
        $smsSign = "腾讯云"; // NOTE: 这里的签名只是示例,请使用真实的已申请的签名,签名参数使用的是`签名内容`,而不是`签名ID`

        // 群发
        try {
            $msender = new SmsMultiSender($appid, $appkey);
            $result = $msender->send(0, "86", $phoneNumbers,
                "123456为您的登录验证码,请于5分钟内填写。如非本人操作,请忽略本短信。", "", "");
            $rsp = json_decode($result);
            echo $result;
        } catch(\Exception $e) {
            echo var_dump($e);
        }

        //暂停3秒
        sleep(3);

        // 指定模板ID群发
        try {
            $msender = new SmsMultiSender($appid, $appkey);
            $params = ["654321", "5"];
            $result = $msender->sendWithParam("86", $phoneNumbers,
                $templateId, $params, $smsSign, "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信
            $rsp = json_decode($result);
            echo $result;
        } catch(\Exception $e) {
            echo var_dump($e);
        }
    }
}

$appid $appkey $templateId $smsSign 为官方 demo 所带,请修改为你自己的。

运行后,正常情况下 3 个手机都会收到两条短信。

5. 语音验证码测试。
腾讯云个人认证不支持此功能。

<?php
namespace app\index\controller;

use Qcloud\Sms\SmsVoiceVerifyCodeSender;

class Index
{  
    public function smsVoiceVerifyCode(){

        // $appid $appkey 为官方demo所带,请修改为你自己的
        // 短信应用SDK AppID
        $appid = 1400009099; // 1400开头

        // 短信应用SDK AppKey
        $appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad";

        // 需要发送短信的手机号码
        $phoneNumbers = ["21212313123", "12345678902", "12345678903"];

        // 发送语音验证码
        try {
            $vvcsender = new SmsVoiceVerifyCodeSender($appid, $appkey);
            $result = $vvcsender->send("86", $phoneNumbers[0], "5678", 2, "");
            $rsp = json_decode($result);
            echo $result;
        } catch (\Exception $e) {
            echo var_dump($e);
        }
    }
}

$appid $appkey 为官方 demo 所带,请修改为你自己的。

运行时,请保证信号与无通话状态。

6. 语音通知测试。
腾讯云个人认证不支持此功能。
先申请模版:现在时间为 {1},确认请按键 1 回复,谢谢。

<?php
namespace app\index\controller;

use Qcloud\Sms\SmsVoicePromptSender;

class Index
{
    public function smsVoicePrompt(){

        // $appid $appkey 为官方demo所带,请修改为你自己的
        // 短信应用SDK AppID
        $appid = 1400009099; // 1400开头

        // 短信应用SDK AppKey
        $appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad";

        // 需要发送短信的手机号码
        $phoneNumbers = ["21212313123", "12345678902", "12345678903"];

        // 发送语音通知
        try {
            $vpsender = new SmsVoicePromptSender($appid, $appkey);
            $result = $vpsender->send("86", $phoneNumber[0], 2, "现在时间为2018年5月25日 17:11:17,确认请按键1回复,谢谢。", "");
            $rsp = json_decode($result);
            echo $result;
        } catch (\Exception $e) {
            echo var_dump($e);
        }
    }
}

$appid $appkey 为官方 demo 所带,请修改为你自己的。

运行时,请保证信号与无通话状态。

腾讯云短信 API 文档:https://cloud.tencent.com/document/product/382/13297
腾讯云短信 SDK 链接:https://cloud.tencent.com/document/product/382/5804

本文链接:https://www.masterzc.cn/archives/74.html
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处

Title - Artist
0:00