Commit 2142b7ffcd34c547819512cd809b77fcc3d4d9b1
Committed by
GitHub
Merge pull request #379 from MeBetterMan/wvp-28181-2.0
级联场景,invite消息中获取channelid。以前从invite的第一行读取,现在从subject header读取。
Showing
2 changed files
with
14 additions
and
1 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
| @@ -29,6 +29,7 @@ import gov.nist.javax.sdp.TimeDescriptionImpl; | @@ -29,6 +29,7 @@ import gov.nist.javax.sdp.TimeDescriptionImpl; | ||
| 29 | import gov.nist.javax.sdp.fields.TimeField; | 29 | import gov.nist.javax.sdp.fields.TimeField; |
| 30 | import gov.nist.javax.sip.address.AddressImpl; | 30 | import gov.nist.javax.sip.address.AddressImpl; |
| 31 | import gov.nist.javax.sip.address.SipUri; | 31 | import gov.nist.javax.sip.address.SipUri; |
| 32 | +import gov.nist.javax.sip.header.Subject; | ||
| 32 | import org.slf4j.Logger; | 33 | import org.slf4j.Logger; |
| 33 | import org.slf4j.LoggerFactory; | 34 | import org.slf4j.LoggerFactory; |
| 34 | import org.springframework.beans.factory.InitializingBean; | 35 | import org.springframework.beans.factory.InitializingBean; |
| @@ -43,6 +44,7 @@ import javax.sip.SipException; | @@ -43,6 +44,7 @@ import javax.sip.SipException; | ||
| 43 | import javax.sip.address.SipURI; | 44 | import javax.sip.address.SipURI; |
| 44 | import javax.sip.header.CallIdHeader; | 45 | import javax.sip.header.CallIdHeader; |
| 45 | import javax.sip.header.FromHeader; | 46 | import javax.sip.header.FromHeader; |
| 47 | +import javax.sip.header.Header; | ||
| 46 | import javax.sip.message.Request; | 48 | import javax.sip.message.Request; |
| 47 | import javax.sip.message.Response; | 49 | import javax.sip.message.Response; |
| 48 | import java.text.ParseException; | 50 | import java.text.ParseException; |
| @@ -114,7 +116,9 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements | @@ -114,7 +116,9 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements | ||
| 114 | try { | 116 | try { |
| 115 | Request request = evt.getRequest(); | 117 | Request request = evt.getRequest(); |
| 116 | SipURI sipURI = (SipURI) request.getRequestURI(); | 118 | SipURI sipURI = (SipURI) request.getRequestURI(); |
| 117 | - String channelId = sipURI.getUser(); | 119 | + //从subject读取channelId,不再从request-line读取。 有些平台request-line是平台国标编码,不是设备国标编码。 |
| 120 | + //String channelId = sipURI.getUser(); | ||
| 121 | + String channelId = SipUtils.getChannelIdFromHeader(request); | ||
| 118 | String requesterId = SipUtils.getUserIdFromFromHeader(request); | 122 | String requesterId = SipUtils.getUserIdFromFromHeader(request); |
| 119 | CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); | 123 | CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); |
| 120 | if (requesterId == null || channelId == null) { | 124 | if (requesterId == null || channelId == null) { |
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
| @@ -2,8 +2,10 @@ package com.genersoft.iot.vmp.gb28181.utils; | @@ -2,8 +2,10 @@ package com.genersoft.iot.vmp.gb28181.utils; | ||
| 2 | 2 | ||
| 3 | import gov.nist.javax.sip.address.AddressImpl; | 3 | import gov.nist.javax.sip.address.AddressImpl; |
| 4 | import gov.nist.javax.sip.address.SipUri; | 4 | import gov.nist.javax.sip.address.SipUri; |
| 5 | +import gov.nist.javax.sip.header.Subject; | ||
| 5 | 6 | ||
| 6 | import javax.sip.header.FromHeader; | 7 | import javax.sip.header.FromHeader; |
| 8 | +import javax.sip.header.Header; | ||
| 7 | import javax.sip.message.Request; | 9 | import javax.sip.message.Request; |
| 8 | 10 | ||
| 9 | /** | 11 | /** |
| @@ -18,6 +20,13 @@ public class SipUtils { | @@ -18,6 +20,13 @@ public class SipUtils { | ||
| 18 | FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME); | 20 | FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME); |
| 19 | return getUserIdFromFromHeader(fromHeader); | 21 | return getUserIdFromFromHeader(fromHeader); |
| 20 | } | 22 | } |
| 23 | + /** | ||
| 24 | + * 从subject读取channelId | ||
| 25 | + * */ | ||
| 26 | + public static String getChannelIdFromHeader(Request request) { | ||
| 27 | + Header subject = request.getHeader("subject"); | ||
| 28 | + return ((Subject) subject).getSubject().split(":")[0]; | ||
| 29 | + } | ||
| 21 | 30 | ||
| 22 | public static String getUserIdFromFromHeader(FromHeader fromHeader) { | 31 | public static String getUserIdFromFromHeader(FromHeader fromHeader) { |
| 23 | AddressImpl address = (AddressImpl)fromHeader.getAddress(); | 32 | AddressImpl address = (AddressImpl)fromHeader.getAddress(); |