国内短信-接口
发送短信
POST | /{orgname}/{appname}/sms/send |
Request header
Authorization | Bearer YWMtPZoRTFk0EeukvYVwaay5gAAAAAAAAAAAAAAAAAAAAAGEbAIHRQdI85XWWn9IAKURAgMAAAF3E059-QBPGgC29yIdZgUINP3vg5IapIANY6z_qQpTbxbUXEX928VpPQ |
有关Token的获取 获取token
Request body
名称 | 类型 | 是否必须 | 说明 | 样例 |
---|---|---|---|---|
mobiles | String[] | 是 | 数组,需要发送短信的手机号,数组长度不能超过100。 | [“2145652789851”] |
tid | String | 是 | 短信模板id | iydsfsdfi |
tmap | Map<String, String> | 是 | 模板变量名和变量值对。 | {“p1”:“value”} |
extendCode | String | 否 | 扩展码 | 1 |
custom | String | 否 | 用户自定义属性,长度不超过64,回调请求中会携带此字段; |
Response
Http Code | 说明 |
---|---|
200 | 成功 |
Respose body
名称 | 类型 | 说明 |
---|---|---|
count | int | 该条短信的计费条数(计费条数:70 个字一条,超出 70 个字时按每 67 字一条计费) |
msg | String | 例如“发送成功”,或者相应错误信息 |
Eg:
请求实例
curl --location --request POST 'http://a1.easemob.com/easemob-demo/894249797/sms/send' \
--header 'Authorization: Bearer token' \
--header 'Content-Type: application/json' \
--data-raw '{
"mobiles": [
"13718793706"
],
"tid": "134",
"tmap": {
"p1": "p1",
"sendIndex": "638-520-3307",
"sendDate": " 2021-05-26 16:45:48",
"sendTotal": "300000"
},
"extendCode": "888",
"custom": "{\"i\":276,\"a\":300000,\"id\":\"ZANK\",\"s\":300000,\"ts\":1618294122528}"
}'
返回实例
http 200
{
"count": 1,
"msg": "短信发送成功!"
}
注意:
余额为0时,发送短信仍然提示成功。但是真实发送是失败的
实现逻辑:将短信放到队列中,认为发送成功。但是真实发送时判断失败,通过状态回调接口,通知用户失败。
回调下行短信状态报告
POST | URL用户提供 |
功能说明:该接口的请求参数是一个数组,数组里最多有100个状态报告。
设置接口:在console控制台中设置下行短信状态报告。
请求头Header
AppKey | String | 应用的AppKey |
CurTime | Long | 当前UTC时间戳,从1970年1月1日0点0 分0 秒开始到现在的毫秒数 |
MD5 | String | 根据请求中的request body计算出来的MD5值 |
CheckSum | String | 校验值 |
Content-Type | String | 请求消息体类型,一般为:application/json |
CheckSum = sha1(AppSecret + MD5 + CurTime),其中AppSecret 、MD5、CurTime均为String类型。
在验证数据是否在传输过程中被篡改时,需要计算验证MD5值是否被修改,以及计算验证CheckSum。
AppSecret值为“设置回调地址 接口参数”, MD5值为根据request body计算出来的值。
String requestBody = “{….}”;
String MD5 = MD5(requestBody);
[{
"reportStatus": "Fail",
"reportMsg": "GB:0015",
"mobile": "17325538434",
"sendTime": "2021-04-07 05:30:28",
"reportTime": "2021-04-07 05:30:28",
"extendCode": "111",
"smsSubAccount": "3aa1f997d9014f9f8b946f40ae57106d",
"custom": "dddddddd"
}]
元素:
名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
custom | String | 否 | |
extendCode | String | 否 | 短信扩展码 |
mobile | String | 是 | 接受短信的手机号 |
reportMsg | String | 是 | 成功时为空,失败时表示具体失败原因 |
reportStatus | String | 是 | “OK”代表发送成功,“Fail”表示失败 |
reportTime | String | 是 | 收到运营商状态报告的时间 |
sendTime | String | 是 | 短信发送时间 |
成功:
reportStatus: OK
reportMsg 没有。
失败:
reportStatus: FAIL
reportMsg: GB:0025
用户上行短信回调
POST | URL用户提供 |
功能说明:该接口的请求参数是一个数组,数组里最多有100个状态报告。对于长短信会出现多次回调。
设置接口,在console控制台中添加上行短信回调地址
如果选择加密,会生成一个MD5密钥和MD5加密算法的盐值。环信平台往用户回调地址回调时会使用密钥+盐值+时间戳计算出MD5值填充在Request header中
请求Header
AppKey | String | 应用的AppKey |
CurTime | Long | 当前UTC时间戳,从1970年1月1日0点0 分0 秒开始到现在的毫秒数 |
MD5 | String | 根据请求中的request body计算出来的MD5值 |
CheckSum | String | 校验值 |
Content-Type | String | 请求消息体类型,一般为:application/json |
在验证数据是否在传输过程中被篡改时,需要计算验证MD5值是否被修改,以及计算验证CheckSum。
AppSecret值为“设置回调地址 接口参数”, MD5值为根据request body计算出来的值。
String requestBody = “{….}”;
String MD5 = MD5(requestBody);
元素:
mobile | String | 是 | 上行手机号 |
content | String | 是 | 短信上行 内容 |
pushTime | String | 是 | 短信上行 推送时间 |
platRecvTime | String | 是 | 平台接收 时间 |
extendCode | String | 否 | 短信扩展码 |
[{
"mobile": "13718793706",
"content": "uuuuuuuuu",
"pushTime": "2021-05-26 16:45:24",
"platRecvTime": "2021-05-26 16:45:24",
"extendCode": "888",
"smsSubAccount": "6bdedc0444c74bd4932eed8f1fb7e562"
}]