From f9d30bdfadd68e61f545e1c5f6260d4f58dca040 Mon Sep 17 00:00:00 2001
From: lawrencehj <1934378145@qq.com>
Date: 星期五, 26 三月 2021 20:15:12 +0800
Subject: [PATCH] 实现语音广播信令(web语音推流开发中)

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java |   41 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index e97629b..5a24202 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -93,7 +93,7 @@
 	private static final String MESSAGE_ALARM = "Alarm";
 	private static final String MESSAGE_RECORD_INFO = "RecordInfo";
 	private static final String MESSAGE_MEDIA_STATUS = "MediaStatus";
-	// private static final String MESSAGE_BROADCAST = "Broadcast";
+	private static final String MESSAGE_BROADCAST = "Broadcast";
 	private static final String MESSAGE_DEVICE_STATUS = "DeviceStatus";
 	private static final String MESSAGE_DEVICE_CONTROL = "DeviceControl";
 	private static final String MESSAGE_DEVICE_CONFIG = "DeviceConfig";
@@ -123,7 +123,7 @@
 				logger.info("鎺ユ敹鍒癈atalog娑堟伅");
 				processMessageCatalogList(evt);
 			} else if (MESSAGE_DEVICE_INFO.equals(cmd)) {
-				//DeviceInfo娑堟伅澶勭悊
+				// DeviceInfo娑堟伅澶勭悊
 				processMessageDeviceInfo(evt);
 			} else if (MESSAGE_DEVICE_STATUS.equals(cmd)) {
 				// DeviceStatus娑堟伅澶勭悊
@@ -149,6 +149,9 @@
 			} else if (MESSAGE_PRESET_QUERY.equals(cmd)) {
 				logger.info("鎺ユ敹鍒癙resetQuery娑堟伅");
 				processMessagePresetQuery(evt);
+			} else if (MESSAGE_BROADCAST.equals(cmd)) {
+				// Broadcast娑堟伅澶勭悊
+				processMessageBroadcast(evt);
 			} else {
 				logger.info("鎺ユ敹鍒版秷鎭細" + cmd);
 				responseAck(evt);
@@ -298,7 +301,7 @@
 				// 杩滅▼鍚姩鍔熻兘
 				if (!XmlUtil.isEmpty(XmlUtil.getText(rootElement, "TeleBoot"))) {
 					if (deviceId.equals(targetGBId)) {
-						// 杩滅▼鍚姩鍔熻兘锛氶渶瑕佸湪閲嶆柊鍚姩绋嬪簭鍚庡厛瀵筍ipStack瑙g粦
+						// 杩滅▼鍚姩鏈钩鍙帮細闇�瑕佸湪閲嶆柊鍚姩绋嬪簭鍚庡厛瀵筍ipStack瑙g粦
 						logger.info("鎵ц杩滅▼鍚姩鏈钩鍙板懡浠�");
 						ParentPlatform parentPlatform = storager.queryParentPlatById(platformId);
 						cmderFroPlatform.unregister(parentPlatform, null, null);
@@ -333,6 +336,7 @@
 						// 杩滅▼鍚姩鎸囧畾璁惧
 					}
 				}
+				// 浜戝彴/鍓嶇鎺у埗鍛戒护
 				if (!XmlUtil.isEmpty(XmlUtil.getText(rootElement,"PTZCmd")) && !deviceId.equals(targetGBId)) {
 					String cmdString = XmlUtil.getText(rootElement,"PTZCmd");
 					Device device = storager.queryVideoDeviceByPlatformIdAndChannelId(platformId, deviceId);
@@ -895,6 +899,37 @@
 		}
 	}
 
+	/**
+	 * 澶勭悊AudioBroadcast璇煶骞挎挱Message
+	 * 
+	 * @param evt
+	 */
+	private void processMessageBroadcast(RequestEvent evt) {
+		try {
+			Element rootElement = getRootElement(evt);
+			String deviceId = XmlUtil.getText(rootElement, "DeviceID");
+			// 鍥炲200 OK
+			responseAck(evt);
+			if (rootElement.getName().equals("Response")) {
+					// 姝ゅ鏄鏈钩鍙板彂鍑築roadcast鎸囦护鐨勫簲绛�
+				JSONObject json = new JSONObject();
+				XmlUtil.node2Json(rootElement, json);
+				if (logger.isDebugEnabled()) {
+					logger.debug(json.toJSONString());
+				}
+				RequestMessage msg = new RequestMessage();
+				msg.setDeviceId(deviceId);
+				msg.setType(DeferredResultHolder.CALLBACK_CMD_BROADCAST);
+				msg.setData(json);
+				deferredResultHolder.invokeResult(msg);
+			} else {
+				// 姝ゅ鏄笂绾у彂鍑虹殑Broadcast鎸囦护
+			}
+		} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
+			e.printStackTrace();
+		}
+	}
+
 
 	/***
 	 * 鍥炲200 OK

--
Gitblit v1.8.0