diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java index 0c23acea..91ea5f11 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java @@ -30,6 +30,8 @@ import java.text.ParseException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText; + @Component public class MessageRequestProcessor extends SIPRequestProcessorParent implements InitializingBean, ISIPRequestProcessor { @@ -73,12 +75,24 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement // 先从会话内查找 SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransaction(null, null, callIdHeader.getCallId(), null); // 兼容海康 媒体通知 消息from字段不是设备ID的问题 - if (ssrcTransaction != null) { - deviceId = ssrcTransaction.getDeviceId(); +// if (ssrcTransaction != null) { +// deviceId = ssrcTransaction.getDeviceId(); +// } + // 查询设备是否存在 + Device device = redisCatchStorage.getDevice(deviceId); + // 兼容海康 媒体通知 消息体中获取 + if(device == null){ + Element rootElement = null; + try { + rootElement = getRootElement(evt); + if (rootElement != null) { + deviceId = getText(rootElement, "DeviceID"); + } + } catch (Exception ignore) {} } SIPRequest request = (SIPRequest) evt.getRequest(); // 查询设备是否存在 - Device device = redisCatchStorage.getDevice(deviceId); + device = redisCatchStorage.getDevice(deviceId); // 查询上级平台是否存在 ParentPlatform parentPlatform = storage.queryParentPlatByServerGBId(deviceId); try {