开发指南:短信验证码/通知



登录|注册

首页

API

解决方案

价格

案例

文档

社区

  

文档首页

开发指南

新手指引

开发流程

鉴权流程

开发者协议

应用审核

云通讯平台错误代码

Rest API

Client SDK

Web SDK

IVR API

应用服务器接口

Group API

Demo

功能点及开发指南

常见问题

开发指南:短信验证码/通知

短信验证码是通过短信网关将含有验证码字符串或通知内容的短信发送到用户手机上,常用在网站注册及重要资料修改、密码变更等环节用来验证用户身份及手机号码的有效性。

文档阅读说明:

1.入 门 必 读: 介绍模板短信的相关规则和注意事项【必读】

2.开 发 必 读: 介绍模板短信的开发流程【如果您想使用demo,可以略过此节,直接看第3章】

3.Demo示 例 : 结合云通讯提供的demo,提供模板短信的示例代码

4.常见错误码: 模板短信开发常见的错误码

5.常 见 问 题:模板短信使用过程的常见问题解答,避免这些常见问题,短信就可畅通无阻的下发。

支持语言

所有开发语言

一 入门必读

1 模板短信前置条件

1.客户注册后,需提交企业级的认证,个人认证客户不允许使用模板短信。

2.客户需累计充值500元以上才可以使用短信模板,否则不能使用短信模板,即用户第一次充值则至少充值500元,如果以前曾经充过值,则累计需要达到500元,不足500元,要使用模板短信必须充值不足到500元。

2 模板短信规则

现在云通讯平台仅支持模板短信,不支持非模板短信接口。

短信模板是需要商务人员和运营商方面进行审核的,审核工作每个工作日进行两次(11:00及15:00),只有审核通过的短信模板才可以被调用。

云通讯提供的测试模板仅供未上线应用使用,对于上线的应用不能用测试模板。

每天限定给同一手机号只能发送1条内容相同的短信。

每天限定给同一手机号只能发送10条内容不同的短信。

未上线的应用只能选择给“控制台--号码管理”里面的3个测试号码发送模板短信。

3 准备工作

1.注册成为云通讯用户

在云通讯网站首页按照引导注册即可。

2.提交企业认证

进入控制台-账号-账号信息-认证信息,如图



信息按照页面提示填写即可,注意一定要以公司身份认证。 3.充值

进入在控制台-账户-充值,如图



4.创建短信模板

短信模板示例:

云通讯提供的测试模板如下,其中 " {序号} " 为需要接口替换的变量,只允许使用数字变量,序号从1开始;"【云通讯】" 为每条模板短信必须带的短信签名,

在自建的短信模板中请根据具体业务自定义替换"【】"中内容。

【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入

例如:程序内指定 {1} = 88888;{2} = 10

则收到短信如下内容

【云通讯】您使用的是云通讯短信模板,您的验证码是88888,请于10分钟内正确输入

创建短信模板过程如下:

首先,在控制台创建您自己的应用,如下图。



其次,在控制台的应用列表中选择自己创建的应用,点上线



然后,在控制台的短信模板中创建短信模板,短信模板示例:



点击新增,出现如下窗口:



点击确定后,将在短信模板页的列表中看见自己创建的短信模板名字,当前状态为审核中,审核通过后,就可以使用了。

4 开发环境

云通讯提供两种开发环境,沙盒环境和生产环境,每个环境的Base URL不同。

1.沙盒环境:沙盒环境用于客户开发调试的环境, 沙盒环境的Base URL为https://sandboxapp.cloopen.com:8883。

2.生产环境:生产环境用于应用上线的正式环境, 生产环境的Base URL为https://app.cloopen.com:8883。

5.免费开发测试

为了让用户在充值之前就能对模板短信进行体验,我们让客户免费开发测试,您觉得可以了,再正式充值使用模板短信。

【免费开发测试也需要先注册成为平台用户,但不需要先做认证和充值】

免费开发测试注意事项:

1.免费开发测试需要使用“控制台——应用——测试demo”下相关信息,如主账号,应用ID。

2.免费开发测试使用的模板ID为1,形式为:【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入,{1}和{2}为短信模板的参数。

3.免费开发测试需要使用沙盒环境。

测试没有问题后,你就可以切换到生产环境了【如果您还没有创建自己的应用,就可以执行前面的“创建应用——充值——创建短信模板”的步骤来操作一遍】

切换到正式环境注意事项:

1.将Base URL 由沙盒环境(https://sandboxapp.cloopen.com:8883)替换到生产环境(https://app.cloopen.com:8883)

2.将AppId由“测试Demo”的AppId改为自己创建的应用的AppId。

3.将模板ID由测试模板ID 1 改为自己创建的模板ID。

二、开发必读

1 模板短信接口请求方式

模板短信API引用的地址有BaseURL。

1.1BaseURL

沙盒环境的BaseURL:https://sandboxapp.cloopen.com:8883

生产环境的BaseURL:https://app.cloopen.com:8883

注意:

1.为了确保数据隐私,云通讯平台的RESTAPI是通过HTTPS方式请求。

1.2统一请求包头

URL格式:/{SoftVersion}/Accounts/{accountSid}/{func}/{funcdes}?sig={SigParameter}

在URL格式中 {}内的内容表示为参数,非{}的内容固定不变。

属性说明:

属性 类型 约束 说明

SoftVersion

String 必选 固定值:2013-12-26

accountSid

String 必选

主账户Id。由32个英文字母和阿拉伯数字组成的主账户唯一标识符

func

String 可选

业务功能,根据业务的需要添加

funcdes

String 可选

业务操作,业务功能的各类具体操作分支

SigParameter

String 必选

RESTAPI验证参数,生成规则如下

1.使用MD5加密(账户Id+账户授权令牌+时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。

时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:20140416142030

2.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG

1.3HTTP标准包头字段(必填)

Accept:application/xml;

Content-Type:application/xml;charset=utf-8;

Content-Length:256;

Authorization:

属性说明:

属性 类型 约束 说明

Accept

String 必选 客户端响应接收数据格式:application/xml、application/json

Content-Type

String 必选 类型:application/xml;charset=utf-8、application/json;charset=utf-8

Content-Length

String 必选 Content-Length

Authorization

String

必选

验证信息,生成规则详见下方说明

1.使用Base64编码(账户Id+冒号+时间戳)其中账户Id根据url的验证级别对应主账户

2.冒号为英文冒号

3.时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与SigParameter中时间戳相同。

2 业务流程说明

步骤描述:

第1步:发送模板短信的https请求

通过HTTPSPOST方式提交请求,发送短信模板。短信模板请求接口说明如下

1请求地址:{SoftVersion}/Accounts/{accountSid}/SMS/TemplateSMS,请看下面例子

主账号Id:ff8080813cb36a8d013cec6ff4a2001f

对应请求地址:2013-12-26/Accounts/ff8080813cb36a8d013cec6ff4a2001f/SMS/TemplateSMS

1.2请求包头

请参阅统一请求包头

1.3请求包体

属性

类型 约束 说明

to String 必选 短信接收端手机号码集合,用英文逗号分开,每批发送的手机号数量不得超过100个

appId

String 必选 应用Id

templateId String 必选 模板Id

datas String 必选 内容数据外层节点

data

String

可选

内容数据,用于替换模板中{序号}

1.4 XML请求示例

POST/2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/SMS/TemplateSMS?sig=C1F20E7A9733CE94F680C70A1DBABCDEHTTP/1.1

Host:192.168.0.1:8883

content-length:139

Accept:application/xml;

Content-Type:application/xml;charset=utf-8;

Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE=

<?xmlversion='1.0'encoding='utf-8'?>

<TemplateSMS>

<to>13912345678</to>

<appId>ff8080813c37da53013c3054f567007e</appId>

<templateId>1</templateId>

<datas>

<data>替换内容</data>

<data>替换内容</data>

</datas>

</TemplateSMS>

1.5 JSON请求示例

POST/2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/SMS/TemplateSMS?sig=C1F20E7A9733CE94F680C70A1DBABCDEHTTP/1.1

Host:192.168.0.1:8883

content-length:139

Accept:application/json;

Content-Type:application/json;charset=utf-8;

Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE=

{"to":"13911281234,15010151234,13811431234","appId":

"ff8080813fc70a7b013fc72312324213","templateId":"1","datas":["替换内容","替换内容"]}

第2步:响应

此步响应只表明客户的短信请求发送成功,不表明短信通道已经发送短信成功。

1响应包说明 属性 类型 约束 说明

statusCode

String

必选

请求状态码,取值000000(成功)

smsMessageSid

String 必选 短信唯一标识符

dateCreated

String 必选 短信的创建时间,格式:年-月-日 时:分:秒(如2013-02-0115:38:09)

2XML响应示例

HTTP/1.1200OK

Content-Length:641

<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>

<Response>

<statusCode>000000</statusCode>

<TemplateSMS>

<smsMessageSid>ff8080813c373cab013c94b0f0512345</smsMessageSid>

<dateCreated>2013-02-0115:38:09</dateCreated>

</TemplateSMS>

</Response>

3JSON响应示例

HTTP/1.1200OK

Content-Length:641

{"statusCode":"000000","TemplateSMS":{"dateCreated":"2013-02-0115:53:06",

"smsMessageSid":"ff8080813c373cab013c94b0f0512345"}}

第3步:判断发送失败,重发

对响应解析后,statusCode为“000000”表示请求发送成功。statusCode不是“000000”,表示请求发送失败,客户服务端可以根据自己的逻辑进行重发或者其他处理。

三、Demo示例

我们在网站上提供各种开发语言的Demo下载,用户要参考模板短信功能如何实现,可以在“RESTServerDemo”部分根据自己的开发语言下载相应的Demo例子。

1PHPDemo中模板短信的使用说明

1.1目录介绍



1.2发送模板短信接口介绍

1.接口声明文件:SDKCCPRestSDK.php

2.接口函数定义:functionsendTemplateSMS($to,$datas,$tempId)

3.参数说明:

开发指南:短信验证码/通知
$to:短信接收手机号码集合,用英文逗号分开,如‘13810001000,13810011001’,最多一次发送100个。

$datas:内容数据,需定义成数组方式,如模板中有两个参数,定义方式为array(‘3456’,’123’)。

$tempId:模板Id,如使用测试模板,模板id为1,如使用自己创建的模板,则使用自己创建的短信模板id即可。

4.接口调用示例:

include_once("../SDK/CCPRestSDK.php");

说明:需要包含接口声明文件,可将该文件拷贝到自己的程序组织目录下。

$accountSid=;

说明:主账号,登陆云通讯网站后,可在“控制台-应用”中看到开发者主账号ACCOUNTSID。

$accountToken=;

说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTHTOKEN。

$appId=;

说明:应用Id,如果是在沙盒环境开发,请配置“控制台-应用-测试DEMO”中的APPID。如切换到生产环境,请使用自己创建应用的APPID。

$serverIP='sandboxapp.cloopen.com';

说明:请求地址。

沙盒环境配置成sandboxapp.cloopen.com,

生产环境配置成app.cloopen.com。

$serverPort='8883';

说明:请求端口,无论生产环境还是沙盒环境都为8883.

$softVersion='2013-12-26';

说明:RESTAPI版本号保持不变。

functionsendTemplateSMS($to,$datas,$tempId)

{

//初始化RESTSDK

global$accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion;

$rest=newREST($serverIP,$serverPort,$softVersion);

$rest->setAccount($accountSid,$accountToken);

$rest->setAppId($appId);

//发送模板短信

echo"SendingTemplateSMSto$to<br/>";

$result=$rest->sendTemplateSMS($to,$datas,$tempId);

if($result==NULL){

echo"resulterror!";

break;

}

if($result->statusCode!=0){

echo"模板短信发送失败!<br/>";

echo"errorcode:".$result->statusCode."<br>";

echo"errormsg:".$result->statusMsg."<br>";

//下面可以自己添加错误处理逻辑

}else{

echo"模板短信发送成功!<br/>";

//获取返回信息

$smsmessage=$result->TemplateSMS;

echo"dateCreated:".$smsmessage->dateCreated."<br/>";

echo"smsMessageSid:".$smsmessage->smsMessageSid."<br/>";

//下面可以自己添加成功处理逻辑

}

}

可参考demo中的接口调用文件:DemoSendTemplateSMS.php。

2JavaDemo中模板短信的使用说明

2.1目录介绍



2.2发送模板短信接口介绍

1.接口声明文件:sdksrccomcloopenrestsdkCCPRestSDK.java

2.接口函数定义:publicHashMap<String,Object>sendTemplateSMS(Stringto,StringtemplateId,String[]datas)

3.参数说明:

to: 字符串类型,短信接收手机号码集合,用英文逗号分开,如“13810001000,

13810011001”,最多一次发送100个。

templateId:字符串类型,模板Id,如使用测试模板,模板id为“1”,如使用自己创建的模板,则使用自己创建的短信模板id即可。

datas:字符串数组类型,内容数据,需定义成数组方式,如模板中有两个参数,定义方式为String{“3456”,“测试”}。

说明:CCPRestSDK.java依赖Jar包:packagecom.cloopen.rest.sdk,在LIB目录下

4.接口调用示例:

importcom.cloopen.rest.sdk.CCPRestSDK;

importcom.cloopen.rest.sdk.CCPRestSDK.BodyType;

publicclassSDKTestSendTemplateSMS{

publicstaticvoidmain(String[]args){

HashMap<String,Object>result=null;

CCPRestSDKrestAPI=newCCPRestSDK();

restAPI.init("sandboxapp.cloopen.com","8883");//初始化服务器地址和端口,沙盒环境配置成sandboxapp.cloopen.com,生产环境配置成app.cloopen.com,端口都是8883.

restAPI.setAccount("accountSid","accountToken");//初始化主账号名称和主账号令牌,登陆云通讯网站后,可在“控制台-应用”中看到开发者主账号ACCOUNTSID和主账号令牌AUTHTOKEN。

restAPI.setAppId("AppId");//初始化应用ID,如果是在沙盒环境开发,请配置“控制台-应用-测试DEMO”中的APPID。如切换到生产环境,请使用自己创建应用的APPID

result=restAPI.sendTemplateSMS("号码1,号码2等","模板Id",newString[]{"模板内容1","模板内容2"});

System.out.println("SDKTestGetSubAccountsresult="+result);

if("000000".equals(result.get("statusCode"))){

//正常返回输出data包体信息(map)

HashMap<String,Object>data=(HashMap<String,Object>)result.get("data");

Set<String>keySet=data.keySet();

for(Stringkey:keySet){

Objectobject=data.get(key);

System.out.println(key+"="+object);

}

}else{

//异常返回输出错误码和错误信息

System.out.println("错误码="+result.get("statusCode")+"错误信息="+result.get("statusMsg"));

}

}

}

可参考demo中的接口调用文件:

demosrccomcloopenrestdemoSDKTestSendTemplateSMS.Java。

3PythonDemo中模板短信的使用说明

3.1目录介绍



3.2发送模板短信接口介绍

1.接口声明文件:SDKCCPRestSDK.py

2.接口函数定义:defsendTemplateSMS(self,to,datas,tempId)

3.参数说明:

to:短信接收手机号码集合,用英文逗号分开,如‘13810001000,13810011001’,最多一次发送100个。

datas:内容数据,需定义成数组方式,如模板中有两个参数,定义方式为array['Marry','Alon']。

templateId:模板Id,如使用测试模板,模板id为“1”,如使用自己创建的模板,则使用自己创建的短信模板id即可。

4.接口调用示例:

编码说明:coding=utf-8或gbk

fromCCPRestSDKimportREST

importConfigParser

accountSid='您的主账号';

#说明:主账号,登陆云通讯网站后,可在“控制台-应用”中看到开发者主账号ACCOUNTSID。

accountToken='您的主账号Token';

#说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTHTOKEN。

appId='您的应用ID';

#说明:应用Id,如果是在沙盒环境开发,请配置“控制台-应用-测试DEMO”中的APPID。如切换到生产环境,请使用自己创建应用的APPID.

serverIP='https://sandboxapp.cloopen.com';

#说明:请求地址。沙盒环境配置成sandboxapp.cloopen.com,生产环境配置成app.cloopen.com。

serverPort='8883';

#说明:请求端口,无论生产环境还是沙盒环境都为8883.

softVersion='2013-12-26'; #说明:RESTAPI版本号保持不变。

defsendTemplateSMS(to,datas,tempId):

#初始化RESTSDK

rest=REST(serverIP,serverPort,softVersion)

rest.setAccount(accountSid,accountToken)

rest.setAppId(appId)

result=rest.sendTemplateSMS(to,datas,tempId)

fork,vinresult.iteritems():

ifk=='templateSMS':

fork,sinv.iteritems():

print'%s:%s'%(k,s)

else:

print'%s:%s'%(k,v)

可参考demo中的接口调用文件:SendTemplateSMS.py。

4C#Demo中模板短信的使用说明

4.1目录介绍



4.2发送模板短信接口介绍

1.接口声明文件:CCPRestSDK.cs

2.接口函数定义:publicDictionary<string,object>SendTemplateSMS(stringto,stringtemplateId,string[]data)

3.参数说明:

to:短信接收手机号码集合,用英文逗号分开,如“13810001000,13810011001”,最多一次发送100个。

templateId:模板Id,如使用测试模板,模板id为”1”,如使用自己创建的模板,则使用自己创建的短信模板id即可。

datas:内容数据,需定义成数组方式,如模板中有两个参数,定义方式为{“1234”,”10”}。

4.接口调用示例:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

namespaceSendTemplateSMS

{

publicpartialclass_Default:Page

{

protectedvoidPage_Load(objectsender,EventArgse)

{

stringret=null;

CCPRestSDK.CCPRestSDKapi=newCCPRestSDK.CCPRestSDK();

boolisInit=api.init("sandboxapp.cloopen.com","8883");

api.setAccount(主账号,主账号令牌);

api.setAppId(应用ID);

try

{

if(isInit)

{

Dictionary<string,object>retData=api.SendTemplateSMS(短信接收号码,短信模板id,内容数据);

ret=getDictionaryData(retData);

}

else

{

ret="初始化失败";

}

}

catch(Exceptionexc)

{

ret=exc.Message;

}

finally

{

Response.Write(ret);

}

}

privatestringgetDictionaryData(Dictionary<string,object>data)

{

stringret=null;

foreach(KeyValuePair<string,object>itemindata)

{

if(item.Value!=null&&item.Value.GetType()==typeof(Dictionary<string,object>))

{

ret+=item.Key.ToString()+"={";

ret+=getDictionaryData((Dictionary<string,object>)item.Value);

ret+="};";

}

else

{

ret+=item.Key.ToString()+"="+(item.Value==null?"null":item.Value.ToString())+";";

}

}

returnret;

}

}

}

可参考demo中的接口调用文件:

CCPRestDemoDemoSendTemplateSMSDefault.aspx.cs。

四 常见错误码

代码 含义

112300

接收短信的手机号码为空

112301

短信正文为空

112302

群发短信已暂停

112303

应用未开通短信功能

112304

短信内容的编码转换有误

112305

应用未上线,短信接收号码外呼受限

112306

接收模板短信的手机号码为空

112307

模板短信模板ID为空

112308

模板短信模板data参数为空

112309

模板短信内容的编码转换有误

112310

应用未上线,模板短信接收号码外呼受限

112311

短信模板不存在

五 常见问题

1.短信发送成功,但是目标手机却没有收到?

答:A.同一个手机号每天只能发1条内容相同的短信

B.同一个手机号每天只能发10条内容不同的短信

C.在用未上线应用或者测试DEMO的时候,只能给“控制台-测试号码”里面配置的手机号发送短信。

D.非模板短信不允许发送

E.测试模板1只允许未上线应用使用,上线应用不能使用

2.符合所有模板短信规则,目标手机却没有收到短信。

答:A.请联系网页上技术支持或售前,由他们为您解决具体的问题。

六 Demo演示

通过浏览器体验:短信验证码/通知

七 收费方式

计费单位:按条计费;

对应价格:"(国内)短信(下行)",报价请进入价格查看。

八 补充说明

目前短信功能只面向企业发送短信验证码、相关通知,不可用于广告群发业务; 使用短信接口需报备发送模板,审核通过后才可正常使用,控制台—提交模板中提交短信模板。

本页面最后修改于2014年8月20日 (星期三) 15:48。

此页面已被浏览过13,013次。

隐私权政策

关于VoIP网络电话、落地电话、呼叫中心等语音和IVR、短信的SDK文档—云通讯平台

免责声明



关于我们

关于云通讯

服务条款

商务合作

企业荣誉

媒体报道

API

REST API

电话 VoIP

短信 SMS

IVR

联系方式

支持:support@yuntongxun.com

电话:4006101019

销售:hz@yuntongxun.com

关注我们

微信新浪微博

? Copyright 2014云通讯平台yuntongxun.comAll Rights Reserved 北京容联易通信息技术有限公司

增值电信业务经营许可证B2-20090494 京ICP证130398号[京ICP备09068088-4]京网文[2010]0567-079号 新出网证(京)字146号短消息证书:号[2010]00266-A011

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/162864.html

更多阅读

是否有后门?91百宝箱“短信门”实测 91手机助手短信导入

近期,网龙公司旗下的“91百宝箱”软件爆出了骇人听闻的“短信门”事件,该软件在不告知用户的情况下,自动向两个手机号码发送短信息,事件一经公布,iPhone用户开始查询自己的话费详单,大批用户遇到了“91百宝箱”暗地发送短信的情况。众多iP

中国邮政11185短信提示要收费吗 邮政11185

昨天收到“扣账户短信额2元”的通知。郁愤难平。  上个月在家(浙江省)办卡时,根本没有告诉我什么短信服务以及收费情况,只是在要求留联系方法时,我留了手机号码。  有次取了钱,发现有短信通知,还心想邮政储蓄服务这么好。昨天的短信,让

短信群发软件

博克短信群发软件网络版  产品名称:博克短信群发软件网络版产品类别:短信群发软件价格:0在线咨询:一、博克短信群发软件网络版产品简介本网络短信群发系统主要是针对广大中小型企业、团体开发的一套短信收发系统,同时也比较适合广告公

声明:《开发指南:短信验证码/通知》为网友细数那段旧事分享!如侵犯到您的合法权益请联系我们删除