您可以指定HTTP URL来接收5G消息发送状态报告。使用SendRCS或SendRCSReply接口发送5G消息后,平台会推送消息发送情况至您提供的HTTP接收地址,您需要接收消息并按平台要求的固定格式响应。
使用说明
通过订阅5GSmsReport下行消息状态报告,可以获知每条5G消息的发送情况,了解消息是否到达终端用户的状态与相关信息。
参数说明
参数内容为JSON Array格式,回执消息不区分群发或单发,单次请求可能包含多条状态报告结果。
协议说明
参数 | 说明 |
请求协议 | HTTP,POST方式 |
请求格式 | application/json |
编码 | UTF-8 |
参数示例
[
{
"phone_number" : "1350001234",
"send_time" : "2017-01-01 00:00:00",
"report_time" : "2017-01-01 00:00:00",
"send_status" : "SEND_SUCCESS",
"err_code" : "DELIVERED",
"err_message" : "用户接收成功",
"rcs_template_code" : "RCS_SMS_10001052",
"rcs_template_type" : "0",
"rcs_template_format" : "PLAIN_TEXT",
"rcs_size" : 2,
"rcs_id" : "100000096034031_1552101_03304904325170151776946304855",
"in_reply_to_rcs_id" : "100000096034031_1552101_03304904325170151776946304856",
"biz_id" : "217124476946304664",
"out_id" : "12391244932857"
}
]字段说明
名称 | 类型 | 描述 |
phone_number | String | 手机号码。 |
send_time | String | 发送时间。 |
report_time | String | 状态报告时间。 |
send_status | String | 发送状态。取值:
|
err_code | String | 状态报告编码。例如DELIVERED(发送成功)、MOBILE_NOT_SUPPORT_RCS(终端不支持5G消息)等。 |
err_message | String | 状态报告说明。 |
rcs_template_code | String | 模板Code。 |
rcs_template_type | String | 消息对应模板类型。取值:
|
rcs_template_format | String | 消息对应模板格式。取值:
|
rcs_size | Integer | 消息条数。计算规则与文本消息字节长度相关,文本消息字节长度统一按照UTF-8编码计算,其中一个英文字符或数字等于一个字节,一个中文(含繁体)等于三个字节,中文标点占三个字节,英文标点占一个字节。例如70个中文汉字的文本消息的字节长度为210。 |
rcs_id | String | 5G消息唯一ID。 |
in_reply_to_rcs_id | String | 是针对哪个消息的回复。 |
biz_id | String | 发送回执ID,即发送流水号。调用发送接口SendRCS或SendRCSReply发送5G消息时,返回值中的BizId字段。 |
out_id | String | 发送时所传的自定义流水号(发送接口的OutId参数)。 |
响应说明
您提供的HTTP地址在接收到请求参数后,需按以下格式进行响应。
响应示例
{
"code" : 0,
"msg" : "接收成功"
}字段说明
名称 | 类型 | 是否必选 | 示例值 | 描述 |
code | Number | 是 | 0 | 应答编码。系统仅校验code是否为数字,不校验内容。 |
msg | String | 否 | 接收成功 | 描述信息。 |
若HTTP状态码为200,则请求成功;HTTP状态码非200或响应超时情况下,系统会重试推送。
若出现系统异常、消费失败等情况,建议HTTP状态码返回50X。
重试推送
第一次推送失败后,间隔1分钟、5分钟、10分钟后会进行重推,直至推送成功为止。如果推送3次后仍失败,不再重试。
回执消息不保证幂等性。如果出现网络异常、响应超时等情况,可能会导致回执消息推送重复,如果后续处理逻辑需要考虑幂等性,请根据业务场景基于rcs_id或biz_id做合适的幂等处理。
报告接收示例
@PostMapping("/resMsg")
public JSONObject resMsg(@RequestBody JSONArray array) {
// TODO:您需要自行处理回执消息,此示例只打印回执信息
System.out.println(array.toJSONString());
JSONObject json = new JSONObject();
json.put("code", 0);
json.put("msg", "接收成功");
return json;
}