|  | @@ -19,13 +19,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Component;
 | 
	
		
			
				|  |  |  import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import javax.sip.ListeningPoint;
 | 
	
		
			
				|  |  | -import javax.sip.ObjectInUseException;
 | 
	
		
			
				|  |  | -import javax.sip.RequestEvent;
 | 
	
		
			
				|  |  | -import javax.sip.SipProvider;
 | 
	
		
			
				|  |  | +import javax.sip.*;
 | 
	
		
			
				|  |  |  import javax.sip.address.SipURI;
 | 
	
		
			
				|  |  |  import javax.sip.header.HeaderAddress;
 | 
	
		
			
				|  |  |  import javax.sip.header.ToHeader;
 | 
	
		
			
				|  |  | +import java.text.ParseException;
 | 
	
		
			
				|  |  |  import java.util.Iterator;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText;
 | 
	
	
		
			
				|  | @@ -105,7 +103,29 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
 | 
	
		
			
				|  |  |          if (!StringUtils.isEmpty(getText(rootElement,"PTZCmd")) && !parentPlatform.getServerGBId().equals(targetGBId)) {
 | 
	
		
			
				|  |  |              String cmdString = getText(rootElement,"PTZCmd");
 | 
	
		
			
				|  |  |              Device deviceForPlatform = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId);
 | 
	
		
			
				|  |  | -            cmder.fronEndCmd(deviceForPlatform, channelId, cmdString);
 | 
	
		
			
				|  |  | +            cmder.fronEndCmd(deviceForPlatform, channelId, cmdString, eventResult -> {
 | 
	
		
			
				|  |  | +                // 失败的回复
 | 
	
		
			
				|  |  | +                try {
 | 
	
		
			
				|  |  | +                    responseAck(evt, eventResult.statusCode, eventResult.msg);
 | 
	
		
			
				|  |  | +                } catch (SipException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                } catch (InvalidArgumentException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                } catch (ParseException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }, eventResult -> {
 | 
	
		
			
				|  |  | +                // 成功的回复
 | 
	
		
			
				|  |  | +                try {
 | 
	
		
			
				|  |  | +                    responseAck(evt, eventResult.statusCode);
 | 
	
		
			
				|  |  | +                } catch (SipException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                } catch (InvalidArgumentException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                } catch (ParseException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |