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 | 29 | import gov.nist.javax.sdp.fields.TimeField; |
| 30 | 30 | import gov.nist.javax.sip.address.AddressImpl; |
| 31 | 31 | import gov.nist.javax.sip.address.SipUri; |
| 32 | +import gov.nist.javax.sip.header.Subject; | |
| 32 | 33 | import org.slf4j.Logger; |
| 33 | 34 | import org.slf4j.LoggerFactory; |
| 34 | 35 | import org.springframework.beans.factory.InitializingBean; |
| ... | ... | @@ -43,6 +44,7 @@ import javax.sip.SipException; |
| 43 | 44 | import javax.sip.address.SipURI; |
| 44 | 45 | import javax.sip.header.CallIdHeader; |
| 45 | 46 | import javax.sip.header.FromHeader; |
| 47 | +import javax.sip.header.Header; | |
| 46 | 48 | import javax.sip.message.Request; |
| 47 | 49 | import javax.sip.message.Response; |
| 48 | 50 | import java.text.ParseException; |
| ... | ... | @@ -114,7 +116,9 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements |
| 114 | 116 | try { |
| 115 | 117 | Request request = evt.getRequest(); |
| 116 | 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 | 122 | String requesterId = SipUtils.getUserIdFromFromHeader(request); |
| 119 | 123 | CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); |
| 120 | 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 | 2 | |
| 3 | 3 | import gov.nist.javax.sip.address.AddressImpl; |
| 4 | 4 | import gov.nist.javax.sip.address.SipUri; |
| 5 | +import gov.nist.javax.sip.header.Subject; | |
| 5 | 6 | |
| 6 | 7 | import javax.sip.header.FromHeader; |
| 8 | +import javax.sip.header.Header; | |
| 7 | 9 | import javax.sip.message.Request; |
| 8 | 10 | |
| 9 | 11 | /** |
| ... | ... | @@ -18,6 +20,13 @@ public class SipUtils { |
| 18 | 20 | FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME); |
| 19 | 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 | 31 | public static String getUserIdFromFromHeader(FromHeader fromHeader) { |
| 23 | 32 | AddressImpl address = (AddressImpl)fromHeader.getAddress(); | ... | ... |