推送事件數(shù)據(jù)
請(qǐng)求方式
POST
Content-Type
application/json
參數(shù):
header
參數(shù) | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
X-BG-HMAC-SIGNATURE | String | 是 | 簽名,API輸入?yún)?shù)簽名結(jié)果陨仅,簽名算法 |
X-BG-HMAC-ALGORITHM | String | 是 | 簽名的摘要算法误窖,當(dāng)前僅支持hmac-sha256 |
X-BG-HMAC-ACCESS-KEY | String | 是 | 分配給應(yīng)用的accessKey |
X-BG-DATE-TIME | String | 是 | 時(shí)間戳奏寨,時(shí)區(qū)為GMT+8磁携,格式為:Tue, 09 Nov 2021 08:49:20 GMT朋其。API服務(wù)端允許客戶端請(qǐng)求最大時(shí)間誤差為100秒 |
body
參數(shù)名 | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
topicName | String | 是 | 網(wǎng)關(guān)接收主題澄阳,業(yè)務(wù)協(xié)同網(wǎng)關(guān)提供 |
content | String | 是 | 請(qǐng)求參數(shù),jso字符串 |
--topicName | String | 是 | 一網(wǎng)統(tǒng)管接收主題倾哺,業(yè)務(wù)協(xié)同網(wǎng)關(guān)提供 |
--content | String | 是 | 請(qǐng)求參數(shù)轧邪,jso字符串 |
——innerEventId | String | 是 | 事件提供方的對(duì)事件的唯?標(biāo)識(shí) |
——areaCode | String | 是 | 事件消息所屬區(qū)域編碼 如:33010000000 |
——streetCode | String | 是 | 街道編碼 |
——origin | String | 是 | 件消息來源部門名稱例如:市應(yīng)急局 |
——scence | String | 是 | 件消息所屬場(chǎng)景編碼:該場(chǎng)景編碼由各提供方向指揮中心平臺(tái)申請(qǐng) |
——title | String | 是 | 事件消息標(biāo)題 |
——content | String | 是 | 事件消息內(nèi)容 |
——eventTime | String | 是 | 事件發(fā)生時(shí)間刽脖,格式為:yyyy-MM- dd HH:mm: |
——eventCoordinate | String | 是 | 件發(fā)生地經(jīng)緯度羞海,格式為:經(jīng)度,緯度 |
——msgType | Integer | 是 | 事件消息類型1:應(yīng)急事件,2:不穩(wěn)定事件預(yù)警曲管,3: 智慧消防却邓,4:火警信息,5:基 層 信息院水,6:火災(zāi)救助 腊徙, 7:搶 險(xiǎn)救 援 , 8:社 會(huì) 救 助檬某,20:其他撬腾。如果已定義的類型不滿足條件,需要向指揮中心平臺(tái)申請(qǐng)對(duì)應(yīng)的事件類型 |
——msgTypeName | String | 是 | 事件類型名稱 |
——eventUrl | String | 否 | 事件消息跳轉(zhuǎn)路徑 |
——superviseStatus | Integer | 否 | 事件當(dāng)前處理狀態(tài)恢恼,0:"未處理" 1:"處理中" 2:"已完成" |
——eventCreator | String | 否 | 事件上報(bào)人 |
——eventCreatorTel | String | 否 | 事件上報(bào)人聯(lián)系方式 |
——eventPlaceName | String | 否 | 事件發(fā)生地點(diǎn)名 |
——eventDuration | Integer | 否 | 事件持續(xù)時(shí)間民傻,單位:秒 |
——executeType | Integer | 是 | 事件執(zhí)行類型 1:流轉(zhuǎn) 2:展示 3:提級(jí) |
——remindStatus | Integer | 是 | 事件是否超時(shí): 0 未超時(shí) 1 已超時(shí) |
——cdcProviderId | Integer | 是 | 消息提供方id |
——eventFile | String | 否 | 附件鏈接(多個(gè)逗號(hào)分隔) |
——eventProcessor | String | 否 | 事件處置人 |
——applicationId | String | 否 | 對(duì)應(yīng)應(yīng)用ID |
——plateNumber | String | 否 | 車牌號(hào)碼 |
——plateColor | String | 否 | 車牌顏色 |
請(qǐng)求示例:
{
"topicName":"eventsImport",
"content":"{"topicName":"eventsImportForWj","content":[{"innerEventId":"sptsj3CEH","areaCode":"330381000000","streetCode":"330381000000","origin":"測(cè)試部門","scence":"120cjsj","title":"測(cè)試事件","content":"測(cè)試事件。","eventTime":"2022-10-26 16:12:32","eventCoordinate":"120.61552503339489,27.70127169381555","msgType":42103,"eventUrl":"http://www.dd.com","superviseStatus":0,"eventCreatorTel":"17857072110","eventCreator":"測(cè)試","eventPlaceName":"測(cè)試地址","executeType":1,"remindStatus":0,"cdcProviderId":49}]}"}
推送事件進(jìn)度數(shù)據(jù)
請(qǐng)求方式
POST
Content-Type
application/json
參數(shù):
header
參數(shù) | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
X-BG-HMAC-SIGNATURE | String | 是 | 簽名,API輸入?yún)?shù)簽名結(jié)果漓踢,簽名算法 |
X-BG-HMAC-ALGORITHM | String | 是 | 簽名的摘要算法牵署,當(dāng)前僅支持hmac-sha256 |
X-BG-HMAC-ACCESS-KEY | String | 是 | 分配給應(yīng)用的accessKey |
X-BG-DATE-TIME | String | 是 | 時(shí)間戳,時(shí)區(qū)為GMT+8喧半,格式為:Tue, 09 Nov 2021 08:49:20 GMT奴迅。API服務(wù)端允許客戶端請(qǐng)求最大時(shí)間誤差為100秒 |
body
參數(shù)名 | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
topicName | String | 是 | 網(wǎng)關(guān)接收主題,業(yè)務(wù)協(xié)同網(wǎng)關(guān)提供 |
content | String | 是 | 請(qǐng)求參數(shù)挺据,json字符串 |
--topicName | String | 是 | 一網(wǎng)統(tǒng)管接收主題取具,業(yè)務(wù)協(xié)同網(wǎng)關(guān)提供 |
--content | String | 是 | 請(qǐng)求參數(shù),json字符串 |
——innerEventId | String | 是 | 事件提供方的對(duì)事件的唯?標(biāo)識(shí) |
——detail | String | 否 | 事件進(jìn)度描述 |
——url | String | 否 | 圖?等多媒體?件鏈 接扁耐,多個(gè)以","相隔 |
——progressTime | String | 是 | 進(jìn)度時(shí)間 格式為: yyyy-MM-dd HH:mm:ss |
——eventProgressStatus | String | 是 | 事件當(dāng)前進(jìn)度狀態(tài),共 有以下?種狀態(tài) 已辦 結(jié),代辦結(jié),待核實(shí),辦 理中,已受理,未受理者填。 推送已辦結(jié)則?動(dòng)修 改事件狀態(tài)為已完 成,推送已受理則? 動(dòng)修改事件為處理中 做葵。 |
——eventProgressExecut or | String | 否 | 事件當(dāng)前進(jìn)度執(zhí)行人 名 |
——eventProgressExecut orId | String | 否 | 事件當(dāng)前進(jìn)度責(zé)任人ID |
——eventProgressExecutorOrg | String | 否 | 事件當(dāng)前進(jìn)度執(zhí)行人部門 |
請(qǐng)求示例:
{
"topicName":"progressesImport","content":"{"topicName":"eventsImportForZhcg","content":[{"innerEventId":"DC6A8522102603432","detail":"結(jié)案","url":"","progressTime":"2022-10-27 10:00:43","eventProgressStatus":null,"eventProgressExecutorId":105867,"eventProgressExecutor":"市值班長(zhǎng)17","eventProgressExecutorOrg":"市監(jiān)督中心"}]}"}
簽名生成方法
/**
* 構(gòu)造http請(qǐng)求 header
* @param url 請(qǐng)求url占哟,全路徑格式,比如:http://122.228.14.56:10005/service
* @param requestMethod 請(qǐng)求方法,大寫格式酿矢,如:GET, POST
* @param accessKey 應(yīng)用的 AK
* @param secretKey 應(yīng)用的 SK
* @return
*/
public static Map<String, String> generateHeader(String url,String requestMethod, String accessKey, String secretKey, String date) {
Map<String, String> header = new HashMap<>();
try {
DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
// String date = dateFormat.format(new Date());
URI uri = URI.create(url);
String canonicalQueryString = getCanonicalQueryString(uri.getQuery());
String message = requestMethod.toUpperCase() + "\n" + uri.getPath() + "\n" + canonicalQueryString + "\n" + accessKey + "\n" + date + "\n";
Mac hasher = Mac.getInstance("HmacSHA256");
hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));
byte[] hash = hasher.doFinal(message.getBytes());
// to lowercase hexits
DatatypeConverter.printHexBinary(hash);
// to base64
String sign = DatatypeConverter.printBase64Binary(hash);
header.put("X-BG-HMAC-SIGNATURE", sign);
header.put("X-BG-HMAC-ALGORITHM", "hmac-sha256");
header.put("X-BG-HMAC-ACCESS-KEY", accessKey);
header.put("X-BG-DATE-TIME", date);
} catch (Exception e) {
throw new RuntimeException("generate header error");
}
return header;
}
private static String getCanonicalQueryString(String query) {
if (query == null || query.trim().length() == 0) {
return "";
}
List<Pair<String, String>> queryParamList = new ArrayList<>();
String[] params = query.split("&");
for (String param : params) {
String[] keyValue = param.split("=");
Pair<String, String> pair = new Pair<String, String>(keyValue[0],keyValue.length > 1 ? keyValue[1] : "");
queryParamList.add(pair);
}
List<Pair<String, String>> sortedParamList = queryParamList.stream().sorted(Comparator.comparing(param -> param.getKey() + "=" + Optional.ofNullable(param.getValue()).orElse(""))).collect(Collectors.toList());
List<Pair<String, String>> encodeParamList = new ArrayList<>();
sortedParamList.stream().forEach(param -> {
try {
String key = URLEncoder.encode(param.getKey(), "utf-8");
String value = URLEncoder.encode(Optional.ofNullable(param.getValue()).orElse(""), "utf-8");
encodeParamList.add(new Pair<>(key, value));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("encoding error");
}
});
StringBuilder queryParamString = new StringBuilder(64);
for (Pair<String, String> encodeParam : encodeParamList) {
queryParamString.append(encodeParam.getKey()).append("=").append(Optional.ofNullable(encodeParam.getValue()).orElse(""));
queryParamString.append("&");
}
return queryParamString.substring(0, queryParamString.length() - 1);
}
事件接收接口規(guī)范
URL: 接收方提供
請(qǐng)求方式
POST
Content-Type
application/json
body參數(shù):
參數(shù) | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
data | String | 是 | 事件信息列表字符串,參見后續(xù)的參數(shù)實(shí)例及字段說明默認(rèn) |
data字段說明
參數(shù) | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
receiveName | String | 是 | 接收方標(biāo)識(shí) |
innerEventId | String | 是 | 第三方案件號(hào) |
areaCode | String | 是 | 事件所屬區(qū)域編碼 |
streetCode | String | 街道編碼 | |
origin | String | 是 | 消息來源部門名稱例如:市應(yīng)急局 |
scence | String | 是 | 消息場(chǎng)景編碼 |
title | String | 是 | 消息標(biāo)題 |
content | String | 是 | 事件詳細(xì)內(nèi)容 |
eventTime | String | 是 | 事件發(fā)生時(shí)間 |
eventCoordinate | String | 是 | 事件發(fā)生地經(jīng)緯度榨乎,格式: 經(jīng)度,緯度 |
msgType | String | 是 | 消息類型 |
eventUrl | String | 事件跳轉(zhuǎn)平臺(tái)鏈接 | |
superviseStatus | int | 針對(duì)該事件處理狀態(tài) 0:未處理 1:處理中 2:已完成 | |
eventCreator | String | 事件消息上報(bào)人 | |
eventCreatorTel | String | 事件消息上報(bào)人聯(lián)系方式 | |
eventPlaceName | String | 事件發(fā)生地名 | |
eventDuration | Long | 事件持續(xù)時(shí)間 | |
executeType | int | 事件執(zhí)行類型 1:流轉(zhuǎn) 2:展示 | |
remindStatus | int | 事件是否超時(shí): 0 未超時(shí) 1 已超時(shí) | |
cdcProviderId | int | 消息提供方id |
示例:
{"data":"{"areaCode":"330302000000","eventCoordinate":"0.0,0.0","eventPlaceName":"1","eventTime":"2022-07-04 00:41:04","innerEventId":"6a9542b3498545209216ea0fbea414a7","origin":"溫州市消防救援支隊(duì)","receiveName":"lcshzlzxEvent","scence":"wzxfsj","streetCode":"330302027000","superviseStatus":1,"title":"火警報(bào)警:1"}"}
事件進(jìn)度接收接口規(guī)范
URL: 接收方提供
請(qǐng)求方式
POST
Content-Type
application/json
body參數(shù):
參數(shù) | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
data | String | 是 | 進(jìn)度信息列表字符串,參見后續(xù)的參數(shù)實(shí)例及字段說明默認(rèn) |
data字段說明
參數(shù) | 參數(shù)類型 | 是否必填 | 說明 |
---|---|---|---|
innerEventId | String | 是 | 第三方案件號(hào) |
detail | String | 是 | 進(jìn)度描述 |
url | String | 鏈接:圖片等多媒體文件地址,多個(gè)用","隔開 | |
progressTime | Date | 是 | 進(jìn)度時(shí)間 |
eventProgressStatus | String | 是 | 事件當(dāng)前進(jìn)度狀態(tài) 已辦結(jié),待辦結(jié),待核實(shí),辦理中,已受理,未受理; |
eventProgressExecutorId | String | 是 | 事件當(dāng)前進(jìn)度執(zhí)行人id |
eventProgressExecutor | String | 是 | 事件當(dāng)前進(jìn)度執(zhí)行人 |
eventProgressExecutorOrg | String | 事件當(dāng)前進(jìn)度執(zhí)行人部門 |
示例:
{"data":"[{"detail":"該問題已處理完畢,請(qǐng)督查瘫筐。","eventProgressExecutor":"五馬中隊(duì)","eventProgressExecutorId":"101059","innerEventId":"DC6A8521072110393","progressTime":"2022-07-04 00:41:04","url":""},{"detail":"","eventProgressExecutor":"市值班長(zhǎng)27","eventProgressExecutorId":"105877","innerEventId":"DC6A8521072110393","progressTime":"2022-07-04 00:41:04","url":""}]"}