Commit 18898e982fa49d5907afa3f75cbaaa7a691b0308

Authored by 648540858
1 parent a9ab5c28

支持读取warning header作为错误消息的内容 #1030

src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
... ... @@ -2,6 +2,8 @@ package com.genersoft.iot.vmp.gb28181.event;
2 2  
3 3 import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent;
4 4 import gov.nist.javax.sip.message.SIPRequest;
  5 +import gov.nist.javax.sip.message.SIPResponse;
  6 +import org.apache.commons.lang3.ObjectUtils;
5 7 import org.slf4j.Logger;
6 8 import org.slf4j.LoggerFactory;
7 9 import org.springframework.scheduling.annotation.Scheduled;
... ... @@ -11,8 +13,7 @@ import javax.sip.DialogTerminatedEvent;
11 13 import javax.sip.ResponseEvent;
12 14 import javax.sip.TimeoutEvent;
13 15 import javax.sip.TransactionTerminatedEvent;
14   -import javax.sip.header.CallIdHeader;
15   -import javax.sip.message.Response;
  16 +import javax.sip.header.WarningHeader;
16 17 import java.time.Instant;
17 18 import java.util.Map;
18 19 import java.util.concurrent.ConcurrentHashMap;
... ... @@ -95,14 +96,27 @@ public class SipSubscribe {
95 96 this.event = event;
96 97 if (event instanceof ResponseEvent) {
97 98 ResponseEvent responseEvent = (ResponseEvent)event;
98   - Response response = responseEvent.getResponse();
  99 + SIPResponse response = (SIPResponse)responseEvent.getResponse();
99 100 this.type = EventResultType.response;
100 101 if (response != null) {
101   - this.msg = response.getReasonPhrase();
  102 + WarningHeader warningHeader = (WarningHeader)response.getHeader(WarningHeader.NAME);
  103 + if (warningHeader != null && !ObjectUtils.isEmpty(warningHeader.getText())) {
  104 + this.msg = "";
  105 + if (warningHeader.getCode() > 0) {
  106 + this.msg += warningHeader.getCode() + ":";
  107 + }
  108 + if (warningHeader.getAgent() != null) {
  109 + this.msg += warningHeader.getCode() + ":";
  110 + }
  111 + if (warningHeader.getText() != null) {
  112 + this.msg += warningHeader.getText();
  113 + }
  114 + }else {
  115 + this.msg = response.getReasonPhrase();
  116 + }
102 117 this.statusCode = response.getStatusCode();
  118 + this.callId = response.getCallIdHeader().getCallId();
103 119 }
104   - this.callId = ((CallIdHeader)response.getHeader(CallIdHeader.NAME)).getCallId();
105   -
106 120 }else if (event instanceof TimeoutEvent) {
107 121 TimeoutEvent timeoutEvent = (TimeoutEvent)event;
108 122 this.type = EventResultType.timeout;
... ...