初始化
确认Endpoint
在确认您使用SDK时配置的Endpoint时,可先阅读开发人员指南中关于SMS访问域名的部分,理解Endpoint相关的概念。区域的概念请参考区域选择说明。
在开始SDK使用之前,需要您先确定好要在哪个区域进行操作,从而在配置SmsClient时将区域对应的Endpoint做为参数填入。
获取密钥
要使用百度智能云产品,您需要拥有一个百度智能云账号和一个有效的 AK(Access Key ID)、SK(Secret Access Key)用来进行签名认证。
可以通过如下步骤获得并了解您的AK/SK信息:
2.创建AK/SK
获取到密钥后,需要在配置Client时做为参数填入。SDK集成了鉴权认证机制,您不需要关心鉴权背后的运算方法,只需要将AK/SK按要求填入对应的位置,SDK将自动为您完成鉴权相关的工作。
新建SmsClient
SmsClient是SMS服务的客户端,为开发者与SMS服务进行交互提供了一系列的方法。
1.在新建SmsClient之前,需要先创建配置文件对SmsClient进行配置,以下将此配置文件命名为SampleConf.php
,具体配置信息如下所示:
1<?php
2use BaiduBce\BceClientConfigOptions;
3
4error_reporting(-1);
5date_default_timezone_set('UTC');
6
7define('__SMS_CLIENT_ROOT', dirname(__DIR__));
8
9$SMS_TEST_CONFIG =
10 array(
11 BceClientConfigOptions::PROTOCOL => 'http',
12 BceClientConfigOptions::REGION => 'bj',
13 'credentials' => array(
14 'ak' => 'your ak',
15 'sk' => 'your sk'
16 ),
17 'endpoint' => 'smsv3.bj.baidubce.com',
18 );
19
20
21$STDERR = fopen('php://stderr', 'w+');
22$__handler = new \Monolog\Handler\StreamHandler($STDERR, \Monolog\Logger::DEBUG);
23$__handler->setFormatter(
24 new \Monolog\Formatter\LineFormatter(null, null, false, true)
25);
26\BaiduBce\Log\LogFactory::setInstance(
27 new \BaiduBce\Log\MonoLogFactory(array($__handler))
28);
29\BaiduBce\Log\LogFactory::setLogLevel(\Psr\Log\LogLevel::DEBUG);
在上面代码中,变量AK与SK是由系统分配给用户的,均为字符串,用于标识用户,为访问SMS做签名验证。其中AK对应控制台中的“Access Key ID”,SK对应控制台中的“Access Key Secret”,获取方式请参考获取AK/SK。
2.在完成上述配置之后,参考如下代码新建一个SmsClient。
1<?php
2
3include 'BaiduBce.phar';
4require 'SampleConf.php';
5
6use BaiduBce\Services\Sms\SmsClient;
7
8global $SMS_TEST_CONFIG;
9$client = new SmsClient($SMS_TEST_CONFIG);
10
11// 手机号,支持单个或多个手机号,多个手机号之间以英文逗号分隔,e.g. 13800138000,13800138001,一次请求最多支持200个手机号
12$mobile = '17615151711';
13// 模板编码
14$template = 'sms-tmpl-VlYLOm62611';
15// 签名
16$signatureId = 'sms-sign-yxveGQ86111';
17// 模板内容
18$contentVar = array(
19 'content' => '验证码有效期5min'
20);
21
22/**
23 *
24 * 响应数据格式
25 *
26 *{
27 * "requestId":"ac17060505d4453ca1c9a7c5be82042b",
28 * "code":"1000",
29 * "message":"成功",
30 * "data":[
31 * {
32 * "code":"1000",
33 * "message":"成功",
34 * "mobile":"13800138000",
35 * "messageId":"6edf7cffa7434d2e8335a0d021ee2b2f"
36 * }
37 * ]
38 *}
39 */
40$response = $client->sendMessage($mobile, $signatureId, $template, $contentVar);
41print_r($response);
设置自定义参数
PHP SDK在\BaiduBce\Bce.php中默认设置了一些基本参数,若用户想要对参数的值进行修改,可以参考此文件来创建自身的参数配置函数,并在构造SmsClient的时候传入或在调用方法的时候传入,传入代码参考如下:
1public function CustomizedConfig() {
2 $customizedConfig = array(
3 BceClientConfigOptions::PROTOCOL => 'http',
4 BceClientConfigOptions::REGION => 'bj',
5 BceClientConfigOptions::CONNECTION_TIMEOUT_IN_MILLIS => 120 * 1000,
6 BceClientConfigOptions::SOCKET_TIMEOUT_IN_MILLIS => 300 * 1000,
7 BceClientConfigOptions::SEND_BUF_SIZE => 5 * 1024 * 1024,
8 BceClientConfigOptions::RECV_BUF_SIZE => 5 * 1024 * 1024,
9 BceClientConfigOptions::CREDENTIALS => array(
10 'ak' => 'your-access-key-id',
11 'sk' => 'your-secret-access-key',
12 ),
13 'endpoint' => 'your-endpoint',
14 );
15
16 //利用自定义配置创建SMSClient
17 $customizedClient = new SmsClient($customizedConfig);
18
19 //通过自定义配置调用方法
20 $options = array('config'=>$customizedConfig);
21 $this->client->sendMessage(..., $options);
22}
参数说明如下:
参数 | 说明 | 默认值 |
---|---|---|
PROTOCOL | 协议 | http |
REGION | 区域 | bj |
CONNECTION_TIMEOUT_IN_MILLIS | 请求超时时间(单位:毫秒) | 50 * 1000 |
SOCKET_TIMEOUT_IN_MILLIS | 通过打开的连接传输数据的超时时间(单位:毫秒) | 0(指的是无限等待,若设置非0数值需要对文件大小和网速进行评估,否则上传大文件时会产生超时) |
SEND_BUF_SIZE | 发送缓冲区大小 | 1024 * 1024 |
RECV_BUF_SIZE | 接收缓冲区大小 | 10 1024 1024 |
注意:不要把
null
传入$options
中,否则调用时会抛出异常。