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 | 3 | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| 4 | 4 | import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent; |
| 5 | 5 | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; |
| 6 | +import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; | |
| 6 | 7 | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; |
| 8 | +import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; | |
| 7 | 9 | import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; |
| 8 | 10 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; |
| 9 | 11 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; |
| ... | ... | @@ -49,6 +51,9 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement |
| 49 | 51 | @Autowired |
| 50 | 52 | private IRedisCatchStorage redisCatchStorage; |
| 51 | 53 | |
| 54 | + @Autowired | |
| 55 | + private VideoStreamSessionManager sessionManager; | |
| 56 | + | |
| 52 | 57 | @Override |
| 53 | 58 | public void afterPropertiesSet() throws Exception { |
| 54 | 59 | // 添加消息处理的订阅 |
| ... | ... | @@ -64,6 +69,11 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement |
| 64 | 69 | logger.debug("接收到消息:" + evt.getRequest()); |
| 65 | 70 | String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest()); |
| 66 | 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 | 78 | CSeqHeader cseqHeader = (CSeqHeader) evt.getRequest().getHeader(CSeqHeader.NAME); |
| 69 | 79 | String method = cseqHeader.getMethod(); | ... | ... |