模板短信业务接口

1 概述

1.1 业务流程说明

1.2 Base URL

模板短信API引用的地址有Base URL。
生产环境的Base URL:https://app.cloopen.com:8883
注意:为了确保数据隐私,云通讯平台的REST API是通过HTTPS方式请求。

1.3 业务URL

业务URL格式:/2013-12-26/Accounts/{accountSid}/SMS/{funcdes}?sig={SigParameter}
在URL格式中 {}内的内容表示为参数,非{}的内容固定不变。
Base URL与业务URL相拼接为完整请求URL,完整URL示例:
属性说明:
属性类型约束说明
accountSid
String必选
开发者主账户ACCOUNT SID(登陆官网在管理控制台获取)
SigParameter
String必选

REST API 验证参数,生成规则如下

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

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

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

1.4 HTTP标准包头字段

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 发送模板短信接口

2.1 请求地址

POST  /2013-12-26/Accounts/{accountSid}/SMS/TemplateSMS?sig={SigParameter}

2.2 请求包体

属性类型约束说明
toString必选短信接收端手机号码集合,用英文逗号分开,每批发送的手机号数量不得超过200个
appId
String必选应用Id,官网控制台应用列表获取
templateIdString必选

模板Id,官网控制台模板列表获取。

测试模板id是1。

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

datasArray可选内容数据外层数组节点
data
String
可选
内容数据,用于替换模板中{序号},模板如果没有变量,此参数可不传,多个变量,使用数组的数据格式
subAppendString可选扩展码,四位数字 0~9999
reqIdString可选第三方自定义消息id,最大支持32位,同账号下同一自然天内不允许重复。
XML请求示例
  •  POST /2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/SMS/TemplateSMS?sig=
  •  C1F20E7A9733CE94F680C70A1DBABCDE HTTP/1.1
  •  Host:192.168.0.1:8883
  •  content-length: 139
  •  Accept:application/xml; 
  •  Content-Type:application/xml;charset=utf-8; 
  •  Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE=
  •  <?xml version='1.0' encoding='utf-8'?> 
  •  <TemplateSMS>
  •   <to>13912345678</to>
  •   <appId>ff8080813c37da53013c3054f567007e</appId> 
  •   <templateId>1</templateId>
  •   <reqId>abc123</reqId>
  •   <subAppend>8888</subAppend>
  •   <datas>
  •     <data>替换内容</data>
  •     <data>替换内容</data>
  •   </datas>
  •  </TemplateSMS>            
  •             
JSON请求示例
  •  POST /2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/SMS/TemplateSMS?sig=
  •  C1F20E7A9733CE94F680C70A1DBABCDE HTTP/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","reqId":"abc123","subAppend":"8888","templateId":"1","datas":["替换内容","替换内容"]}           
  •             

2.3 响应包体

  • 此步响应只表明接口请求成功,不代表短信已送达手机。具体送达状态请参考“状态报告部分”
  • 对响应解析后,statusCode为"000000"表示请求发送成功。statusCode非"000000"表示请求发送失败,客户服务端可以根据自己的逻辑进行重发或者其他处理。
属性类型约束说明

statusCode

String

必选

请求状态码,取值000000(成功),其余状态码含义详见短信错误码部分

smsMessageSid
String必选短信唯一标识符
dateCreated
String必选短信的创建时间,格式:yyyyMMddHHmmss
XML响应示例
  •   HTTP/1.1 200 OK 
  •   Content-Length: 641 
  •   
  •   <?xml version="1.0" encoding="UTF-8" standalone="yes"?&;
  •   <Response>
  •    <statusCode>000000</statusCode>
  •     <TemplateSMS>
  •       <smsMessageSid>ff8080813c373cab013c94b0f0512345</smsMessageSid>
  •       <dateCreated>20130201153809</dateCreated>
  •     </TemplateSMS>
  •   </Response>          
  •             
JSON响应示例
  •  HTTP/1.1 200 OK 
  •  Content-Length: 641
  •  
  •  {"statusCode":"000000","templateSMS":{"dateCreated":"20130201155306","smsMessageSid":" ff8080813c373cab013c94b0f0512345"}}        
  •             

3 短信状态报告、上行短信信息回调接口

  • 目前支持 HTTP/HTTPS 方式的回调,采用 POST 方式,正文部分为 XML或者 JSON 格式,字符集为 UTF-8;
  • 上行短信、状态报告回调功能开启与回调地址的配置,请联系商务经理或售后客服配置

3.1 回调地址

POST  /{path}

3.2 回调请求参数

属性类型约束说明
actionString必选功能操作标识 ,SMSArrived
smsTypeString必选短信类型,0:上行短信,1:手机接收状态报告
recvTimeString必选收到上行短信/短信送达手机时间,格式:yyyyMMddHHmmss
apiVersionString必选REST API版本号,格式:YYYY-MM-DD
fromNumString必选发送/接收短信的手机号码,以1开头的11位号码
spCodeString可选下行通道码号
contentString必选当smsType=0时,该字段值手机回复的短信内容,utf8格式
当smsType=1时,该字段的值为短信ID,即下行短信请求响应的smsMessageSid
appendCodeString可选短信扩展码,由数字组成,对应不同的下行短信签名
以此区分不同的下行短信签名
smsType=0时有效
subAppendString可选自定义短信扩展码,对应下行时传递的subAppend
smsType=0时有效。
statusString可选短信到达状态, 0为接收成功,其它值为接收失败
smsType=1时有效
dateSentString可选短信发送时间,格式:yyyyMMddHHmmss
smsType=1时有效
deliverCodeString可选到达状态描述,即运营商网关状态码
当status非0且smsType=1时有效
reqIdString可选第三方自定义消息id
smsType=1时有效
smsCountString可选下行短信计费条数
smsType=1时有效
XML请求示例
  • POST http://{ip|域名}:{port}/{path}
  •  
  • <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  • <Request>
  •  <action>SMSArrived</action>
  •  <smsType>1</smsType>
  •  <recvTime>20130923010101</recvTime>
  •  <apiVersion>2013-12-26</apiVersion>
  •  <fromNum>13912345678</fromNum>
  •  <deliverCode>DELIVRD</deliverCode>
  •  <content>4121908f3d1b4edb9210f0eb4742f62c</content>
  •  <reqId>123</reqId>
  •  <status>0</status>
  •  <smsCount>2</smsCount>
  •  <dateSent>20130923010000</dateSent>
  •  <spCode>10690876</spCode>
  • </Request>          
  •             
JSON请求示例
  • POST http://{ip|域名}:{port}/{path}
  •  
  • {"Request":{"action":"SMSArrived","smsType":"1","apiVersion":"2013-12-26","content":"4121908f3d1b4edb9210f0eb4742f62c","fromNum":"13912345678","dateSent":"20130923010000","deliverCode":"DELIVRD","recvTime":"20130923010010","status":"0","reqId":"123","smsCount":"2","spCode":"10690876"}}         
  •             

3.3 响应要求

  • 客户端需要对回调请求响应 HTTP 200的正确状态,否则服务端会进行重试直到失败次数达到阈值
  • 如出现接收问题请联系请联系商务经理或技术支持

4 批量获取短信状态报告、上行短信信息接口

  • 批量获取接口功能开启,请联系商务经理或售后客服配置
  • 批量获取接口与回调功能两种获取方式只能选一

4.1 请求地址

POST  /2013-12-26/Accounts/{accountSid}/SMS/GetArrived?sig={SigParameter}

4.2 请求包体

属性类型约束说明
appIdString必选应用Id
smsTypeString可选0:上行短信数据 1:短信状态报告 缺省1
countString可选查询状态的数量。最大500,缺省100
JSON请求示例
  •  POST /2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/SMS/TemplateSMS?sig=
  •  C1F20E7A9733CE94F680C70A1DBABCDE HTTP/1.1

  •  Host:192.168.0.1:8883
  •  content-length: 139
  •  Accept:application/json; 
  •  Content-Type:application/json;charset=utf-8; 
  •  Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE=
  •  
  • {“appId”:”ff8080813fc70a7b013fc72312324213”}       
  •             

4.3 响应包体

属性类型约束说明
statusCodeString必选请求状态码,取值000000(成功)
actionString必选功能操作标识 ,SMSArrived
apiVersionString必选REST API版本号,格式:YYYY-MM-DD
smsTypeString必选0:上行短信数据 1:短信状态报告
fromNumString必选发送/接收短信的手机号码,以1开头的11位号码
contentString必选当smsType=0时,该字段值手机回复的短信内容,utf8格式
当smsType=1时,该字段的值为短信ID,即下行短信请求响应的smsMessageSid
recvTimeString必选收到上行短信/短信送达手机时间,格式:yyyyMMddHHmmss
appendCodeString可选短信扩展码,由数字组成,对应不同的下行短信签名
以此区分不同的下行短信签名
smsType=0时有效。
subAppendString可选自定义短信扩展码,对应下行时传递的subAppend
smsType=0时有效。
statusString可选短信到达状态, 0为接收成功,其它值为接收失败
smsType=1时有效
dateSentString可选短信发送时间,格式:yyyyMMddHHmmss
smsType=1时有效
deliverCode String可选到达状态描述,即运营商网关状态码
当status非0且smsType=1时有效
reqIdString可选第三方自定义消息id
smsType=1时有效
smsCountInt可选下行短信计费条数
smsType=1时有效
spCodeString可选下行通道码号
JSON响应示例
  •  HTTP/1.1 200 OK 
  •  Content-Length: 641
  •  
  • {"statusCode":"000000","reports":[{"content":"dd134b50e636433a96288f4ce5bb1630","apiVersion":"2013-12-26","fromNum":"18626622933","status":"0","smsType":"1","recvTime":"20161202100328","action":"SMSArrived","dateSent":"20161202100325"},{"content":"14477928a672437691c295e7dc6d63fb","apiVersion":"2013-12-26","fromNum":"18616863107","status":"0","smsType":"1","recvTime":"20161202100332","action":"SMSArrived","dateSent":"20161202100330"}]}      
  •