diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java index 74c63e112..3e2c40b15 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java @@ -3,6 +3,8 @@ package com.genersoft.iot.vmp.gb28181.bean; import gov.nist.javax.sip.message.SIPResponse; import lombok.Data; +import javax.sip.header.EventHeader; + @Data public class SipTransactionInfo { @@ -12,6 +14,7 @@ public class SipTransactionInfo { private String viaBranch; private int expires; private String user; + private String eventId; // 自己是否媒体流发送者 private boolean asSender; @@ -22,6 +25,10 @@ public class SipTransactionInfo { this.toTag = response.getToTag(); this.viaBranch = response.getTopmostViaHeader().getBranch(); this.asSender = asSender; + EventHeader header = (EventHeader)response.getHeader(EventHeader.NAME); + if (header != null) { + this.eventId = header.getEventId(); + } } public SipTransactionInfo(SIPResponse response) { @@ -30,6 +37,10 @@ public class SipTransactionInfo { this.toTag = response.getToTag(); this.viaBranch = response.getTopmostViaHeader().getBranch(); this.asSender = false; + EventHeader header = (EventHeader)response.getHeader(EventHeader.NAME); + if (header != null) { + this.eventId = header.getEventId(); + } } public SipTransactionInfo() { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java index f4820ff2b..a99e044a1 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java @@ -269,12 +269,15 @@ public class SIPRequestHeaderProvider { ExpiresHeader expireHeader = SipFactory.getInstance().createHeaderFactory().createExpiresHeader(expires); request.addHeader(expireHeader); - // Event - EventHeader eventHeader = SipFactory.getInstance().createHeaderFactory().createEventHeader(event); - - int random = (int) Math.floor(Math.random() * 10000); - eventHeader.setEventId(random + ""); - request.addHeader(eventHeader); + // Event + EventHeader eventHeader = SipFactory.getInstance().createHeaderFactory().createEventHeader(event); + if (sipTransactionInfo != null && sipTransactionInfo.getEventId() != null) { + eventHeader.setEventId(sipTransactionInfo.getEventId()); + }else { + int random = (int) Math.floor(Math.random() * 10000); + eventHeader.setEventId(random + ""); + } + request.addHeader(eventHeader); ContentTypeHeader contentTypeHeader = SipFactory.getInstance().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml"); request.setContent(content, contentTypeHeader);