Browse Source

Merge pull request #379 from MeBetterMan/wvp-28181-2.0

级联场景,invite消息中获取channelid。以前从invite的第一行读取,现在从subject header读取。
pull/423/head
648540858 3 years ago
committed by GitHub
parent
commit
2142b7ffcd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
  2. 9
      src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java

6
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java

@ -29,6 +29,7 @@ import gov.nist.javax.sdp.TimeDescriptionImpl;
import gov.nist.javax.sdp.fields.TimeField; import gov.nist.javax.sdp.fields.TimeField;
import gov.nist.javax.sip.address.AddressImpl; import gov.nist.javax.sip.address.AddressImpl;
import gov.nist.javax.sip.address.SipUri; import gov.nist.javax.sip.address.SipUri;
import gov.nist.javax.sip.header.Subject;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
@ -43,6 +44,7 @@ import javax.sip.SipException;
import javax.sip.address.SipURI; import javax.sip.address.SipURI;
import javax.sip.header.CallIdHeader; import javax.sip.header.CallIdHeader;
import javax.sip.header.FromHeader; import javax.sip.header.FromHeader;
import javax.sip.header.Header;
import javax.sip.message.Request; import javax.sip.message.Request;
import javax.sip.message.Response; import javax.sip.message.Response;
import java.text.ParseException; import java.text.ParseException;
@ -114,7 +116,9 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
try { try {
Request request = evt.getRequest(); Request request = evt.getRequest();
SipURI sipURI = (SipURI) request.getRequestURI(); SipURI sipURI = (SipURI) request.getRequestURI();
String channelId = sipURI.getUser(); //从subject读取channelId,不再从request-line读取。 有些平台request-line是平台国标编码,不是设备国标编码。
//String channelId = sipURI.getUser();
String channelId = SipUtils.getChannelIdFromHeader(request);
String requesterId = SipUtils.getUserIdFromFromHeader(request); String requesterId = SipUtils.getUserIdFromFromHeader(request);
CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME);
if (requesterId == null || channelId == null) { if (requesterId == null || channelId == null) {

9
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java

@ -2,8 +2,10 @@ package com.genersoft.iot.vmp.gb28181.utils;
import gov.nist.javax.sip.address.AddressImpl; import gov.nist.javax.sip.address.AddressImpl;
import gov.nist.javax.sip.address.SipUri; import gov.nist.javax.sip.address.SipUri;
import gov.nist.javax.sip.header.Subject;
import javax.sip.header.FromHeader; import javax.sip.header.FromHeader;
import javax.sip.header.Header;
import javax.sip.message.Request; import javax.sip.message.Request;
/** /**
@ -18,6 +20,13 @@ public class SipUtils {
FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME); FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME);
return getUserIdFromFromHeader(fromHeader); return getUserIdFromFromHeader(fromHeader);
} }
/**
* 从subject读取channelId
* */
public static String getChannelIdFromHeader(Request request) {
Header subject = request.getHeader("subject");
return ((Subject) subject).getSubject().split(":")[0];
}
public static String getUserIdFromFromHeader(FromHeader fromHeader) { public static String getUserIdFromFromHeader(FromHeader fromHeader) {
AddressImpl address = (AddressImpl)fromHeader.getAddress(); AddressImpl address = (AddressImpl)fromHeader.getAddress();

Loading…
Cancel
Save