Commit 9aee7d42e3f7f1c28bddf765b1078048d982ae30
1 parent
daab2586
兼容海康 媒体通知 消息from字段不是设备ID的问题
Showing
1 changed file
with
10 additions
and
0 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
| @@ -3,7 +3,9 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message; | @@ -3,7 +3,9 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message; | ||
| 3 | import com.genersoft.iot.vmp.gb28181.bean.Device; | 3 | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| 4 | import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent; | 4 | import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent; |
| 5 | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | 5 | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; |
| 6 | +import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; | ||
| 6 | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; | 7 | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; |
| 8 | +import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; | ||
| 7 | import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; | 9 | import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; |
| 8 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; | 10 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; |
| 9 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; | 11 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; |
| @@ -49,6 +51,9 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement | @@ -49,6 +51,9 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement | ||
| 49 | @Autowired | 51 | @Autowired |
| 50 | private IRedisCatchStorage redisCatchStorage; | 52 | private IRedisCatchStorage redisCatchStorage; |
| 51 | 53 | ||
| 54 | + @Autowired | ||
| 55 | + private VideoStreamSessionManager sessionManager; | ||
| 56 | + | ||
| 52 | @Override | 57 | @Override |
| 53 | public void afterPropertiesSet() throws Exception { | 58 | public void afterPropertiesSet() throws Exception { |
| 54 | // 添加消息处理的订阅 | 59 | // 添加消息处理的订阅 |
| @@ -64,6 +69,11 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement | @@ -64,6 +69,11 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement | ||
| 64 | logger.debug("接收到消息:" + evt.getRequest()); | 69 | logger.debug("接收到消息:" + evt.getRequest()); |
| 65 | String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest()); | 70 | String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest()); |
| 66 | CallIdHeader callIdHeader = (CallIdHeader)evt.getRequest().getHeader(CallIdHeader.NAME); | 71 | CallIdHeader callIdHeader = (CallIdHeader)evt.getRequest().getHeader(CallIdHeader.NAME); |
| 72 | + // 先从会话内查找 | ||
| 73 | + SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransaction(null, null, null, callIdHeader.getCallId()); | ||
| 74 | + if (ssrcTransaction != null) { // 兼容海康 媒体通知 消息from字段不是设备ID的问题 | ||
| 75 | + deviceId = ssrcTransaction.getDeviceId(); | ||
| 76 | + } | ||
| 67 | // 查询设备是否存在 | 77 | // 查询设备是否存在 |
| 68 | CSeqHeader cseqHeader = (CSeqHeader) evt.getRequest().getHeader(CSeqHeader.NAME); | 78 | CSeqHeader cseqHeader = (CSeqHeader) evt.getRequest().getHeader(CSeqHeader.NAME); |
| 69 | String method = cseqHeader.getMethod(); | 79 | String method = cseqHeader.getMethod(); |