状态回调
更新时间:2023-05-19
描述
将短信下发的状态报告通过回调业务方服务地址的方式告知业务方。
URL
由业务方提供。用户可以在“开发配置“中设置自己的上行回调地址
HTTP Method
POST
HTTP Header
头域(Header) | 示例值 | 说明 |
---|---|---|
Content-Type | application/json;charset=utf-8 | - |
requestId | 54eb30d9-fead-4048-bb8b-200cf12ab8e9 | 本次推送对应的消息id.客户端可以根据该字段去重 |
timestamp | 1462774903112 | 推送时间戳 |
signature | 693b669f77f9c19030466263144646a | 该字段为推送时的认证字段。客户端可以根据该字段进行认证。算法:md5(token + timestamp + body),其中token默认为百度智能云ID,body为状态推送请求的request body token为客户对应的唯一标示,若为空则不参与签名的生成。加密过程请参考:MD5加密代码示例 |
请求参数
名称 | 类型 | 是否必需 | 备注 |
---|---|---|---|
code | String | 是 | 0-发送成功,2-发送失败 |
requestId | String | 是 | 请求id,与短信发送请求中的requestId对应 |
messageId | String | 是 | 短信消息id |
mobile | String | 是 | 手机号 |
carrierCode | String | 是 | 运营商原生状态码 |
custom | String | 否 | 用户在发送请求中自定义的参数 |
attemptCount | int | 是 | 尝试推送的次数,推送失败时会重试3次。无重试则为1 |
segmentCount | int | 是 | 短信拆分后的条数 |
deliverTime | String | 是 | 抵达时间,UTC时间 |
requestTime | String | 是 | 请求时间,UTC时间 |
响应参数
响应参数由业务方自定义。百度云SMS会根据回调响应中的HTTP Status来判断是否回调成功,Status为200表示回调成功,非200表示回调失败。
回调重试策略
由于网络原因导致的推送失败(如连接超时等),SMS会启动重试策略。重试策略:推送失败,立即重试3次,失败后,间隔一个小时重试一次,最大重试次数是10次,超过最大重试次数停止重试。基于此重试策略,对于同一个messageId可能会重复推送,建议用户忽略第二次收到的状态推送请求,以避免重复处理。
其他注意事项
注意百度云SMS的回调请求源IP和端口均不固定,建议业务方不要对回调地址设置IP白名单。
状态回调请求示例
POST /your/callback/url HTTP/1.1
signature: 4eaca69ae63c4b823653c671f1eb5fa5
requestId: 71bdbef0ac8847378da21ecb142a14e7
timestamp: 1597320812102
Content-Type: application/json;charset=utf-8
{
"requestTime":"2019-12-03T22:53:00Z",
"deliverTime":"2019-12-03T22:53:05Z",
"code":"0",
"requestId":"a6d5f1d9ca2048e5a5454e75da1db563",
"custom":"example custom",
"carrierCode":"DELIVRD",
"mobile":"13800138000",
"messageId":"c5366f96477b49ca90bcdff2516fe521"
}
响应示例
HTTP/1.1 200 OK
Content-Length: 50
Content-Type: aplication/json;charset=UTF-8
Date: Wed, 04 Dec 2019 06:53:13 GMT
MD5加密示例
import org.apache.commons.codec.digest.DigestUtils;
public static void main(String... args) {
String token = "dfb97fb8170a539acd576b710877c2b0";
String timestamp = "1597320812102";
String body = "{\"requestId\":\"6373df1f-3465-454e-a745-0de13154cf67\",\"messageId\":\"6373df1f-3465-454e-a745-0de13154cf67_13060412623\",\"mobile\":\"13800138000\",\"code\":\"0\",\"requestTime\":\"2020-08-13T12:13:14Z\",\"deliverTime\":\"2020-08-13T12:13:32Z\",\"custom\":null,\"carrierCode\":\"DELIVRD\",\"attemptCount\":1,\"segmentCount\":2}";
String signature = DigestUtils.md5Hex(token + timestamp + body);
System.out.println(signature);
// 输出为:34d38bbfef1c471a951a4019561139fb
}