模板短信业务接口
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示例:
https://app.cloopen.com:8883/2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/SMS/TemplateSMS?sig=C1F20E7A9733CE94F680C70A1DBABCD
属性说明:
属性 | 类型 | 约束 | 说明 |
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 请求包体
属性 | 类型 | 约束 | 说明 |
to | String | 必选 | 短信接收端手机号码集合,用英文逗号分开,每批发送的手机号数量不得超过200个 |
appId | String | 必选 | 应用Id,官网控制台应用列表获取 |
templateId | String | 必选 | 模板Id,官网控制台模板列表获取。 测试模板id是1。 测试模板的内容是:【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入 |
datas | Array | 可选 | 内容数据外层数组节点 |
data | String | 可选 | 内容数据,用于替换模板中{序号},模板如果没有变量,此参数可不传,多个变量,使用数组的数据格式 |
subAppend | String | 可选 | 扩展码,四位数字 0~9999 |
reqId | String | 可选 | 第三方自定义消息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 回调请求参数
属性 | 类型 | 约束 | 说明 |
action | String | 必选 | 功能操作标识 ,SMSArrived |
smsType | String | 必选 | 短信类型,0:上行短信,1:手机接收状态报告 |
recvTime | String | 必选 | 收到上行短信/短信送达手机时间,格式:yyyyMMddHHmmss |
apiVersion | String | 必选 | REST API版本号,格式:YYYY-MM-DD |
fromNum | String | 必选 | 发送/接收短信的手机号码,以1开头的11位号码 |
spCode | String | 可选 | 下行通道码号 |
content | String | 必选 | 当smsType=0时,该字段值手机回复的短信内容,utf8格式 当smsType=1时,该字段的值为短信ID,即下行短信请求响应的smsMessageSid |
appendCode | String | 可选 | 短信扩展码,由数字组成,对应不同的下行短信签名 以此区分不同的下行短信签名 smsType=0时有效 |
subAppend | String | 可选 | 自定义短信扩展码,对应下行时传递的subAppend smsType=0时有效。 |
status | String | 可选 | 短信到达状态, 0为接收成功,其它值为接收失败 smsType=1时有效 |
dateSent | String | 可选 | 短信发送时间,格式:yyyyMMddHHmmss smsType=1时有效 |
deliverCode | String | 可选 | 到达状态描述,即运营商网关状态码 当status非0且smsType=1时有效 |
reqId | String | 可选 | 第三方自定义消息id smsType=1时有效 |
smsCount | String | 可选 | 下行短信计费条数 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 请求包体
属性 | 类型 | 约束 | 说明 |
appId | String | 必选 | 应用Id |
smsType | String | 可选 | 0:上行短信数据 1:短信状态报告 缺省1 |
count | String | 可选 | 查询状态的数量。最大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 响应包体
属性 | 类型 | 约束 | 说明 |
statusCode | String | 必选 | 请求状态码,取值000000(成功) |
action | String | 必选 | 功能操作标识 ,SMSArrived |
apiVersion | String | 必选 | REST API版本号,格式:YYYY-MM-DD |
smsType | String | 必选 | 0:上行短信数据 1:短信状态报告 |
fromNum | String | 必选 | 发送/接收短信的手机号码,以1开头的11位号码 |
content | String | 必选 | 当smsType=0时,该字段值手机回复的短信内容,utf8格式 当smsType=1时,该字段的值为短信ID,即下行短信请求响应的smsMessageSid |
recvTime | String | 必选 | 收到上行短信/短信送达手机时间,格式:yyyyMMddHHmmss |
appendCode | String | 可选 | 短信扩展码,由数字组成,对应不同的下行短信签名 以此区分不同的下行短信签名 smsType=0时有效。 |
subAppend | String | 可选 | 自定义短信扩展码,对应下行时传递的subAppend smsType=0时有效。 |
status | String | 可选 | 短信到达状态, 0为接收成功,其它值为接收失败 smsType=1时有效 |
dateSent | String | 可选 | 短信发送时间,格式:yyyyMMddHHmmss smsType=1时有效 |
deliverCode | String | 可选 | 到达状态描述,即运营商网关状态码 当status非0且smsType=1时有效 |
reqId | String | 可选 | 第三方自定义消息id smsType=1时有效 |
smsCount | Int | 可选 | 下行短信计费条数 smsType=1时有效 |
spCode | String | 可选 | 下行通道码号 |
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"}]}