|
@@ -975,20 +975,9 @@ public class SIPCommander implements ISIPCommander {
|
|
|
*/
|
|
|
@Override
|
|
|
public void recordCmd(Device device, String channelId, String recordCmdStr, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException {
|
|
|
- StringBuffer cmdXml = new StringBuffer(200);
|
|
|
- String charset = device.getCharset();
|
|
|
- cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
|
|
- cmdXml.append("<Control>\r\n");
|
|
|
- cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
|
|
- cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
|
|
- if (ObjectUtils.isEmpty(channelId)) {
|
|
|
- cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
|
|
- } else {
|
|
|
- cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
|
|
- }
|
|
|
+ StringBuffer cmdXml = devControlHeaderXml(device, channelId);
|
|
|
cmdXml.append("<RecordCmd>" + recordCmdStr + "</RecordCmd>\r\n");
|
|
|
cmdXml.append("</Control>\r\n");
|
|
|
-
|
|
|
|
|
|
|
|
|
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
|
|
@@ -1087,6 +1076,17 @@ public class SIPCommander implements ISIPCommander {
|
|
|
@Override
|
|
|
public void iFrameCmd(Device device, String channelId) throws InvalidArgumentException, SipException, ParseException {
|
|
|
|
|
|
+
|
|
|
+ StringBuffer cmdXml = devControlHeaderXml(device, channelId);
|
|
|
+ cmdXml.append("<IFameCmd>Send</IFameCmd>\r\n");
|
|
|
+ cmdXml.append("</Control>\r\n");
|
|
|
+
|
|
|
+
|
|
|
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()), device.getTransport()));
|
|
|
+ sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
|
|
|
+ }
|
|
|
+
|
|
|
+ private StringBuffer devControlHeaderXml(Device device, String channelId) {
|
|
|
StringBuffer cmdXml = new StringBuffer(200);
|
|
|
String charset = device.getCharset();
|
|
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
|
@@ -1098,13 +1098,7 @@ public class SIPCommander implements ISIPCommander {
|
|
|
} else {
|
|
|
cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
|
|
}
|
|
|
- cmdXml.append("<IFameCmd>Send</IFameCmd>\r\n");
|
|
|
- cmdXml.append("</Control>\r\n");
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
|
|
|
- sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
|
|
|
+ return cmdXml;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1119,17 +1113,7 @@ public class SIPCommander implements ISIPCommander {
|
|
|
@Override
|
|
|
public void homePositionCmd(Device device, String channelId, String enabled, String resetTime, String presetIndex, SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException {
|
|
|
|
|
|
- StringBuffer cmdXml = new StringBuffer(200);
|
|
|
- String charset = device.getCharset();
|
|
|
- cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
|
|
- cmdXml.append("<Control>\r\n");
|
|
|
- cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
|
|
- cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
|
|
- if (ObjectUtils.isEmpty(channelId)) {
|
|
|
- cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
|
|
- } else {
|
|
|
- cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
|
|
- }
|
|
|
+ StringBuffer cmdXml = devControlHeaderXml(device, channelId);
|
|
|
cmdXml.append("<HomePosition>\r\n");
|
|
|
if (NumericUtil.isInteger(enabled) && (!enabled.equals("0"))) {
|
|
|
cmdXml.append("<Enabled>1</Enabled>\r\n");
|
|
@@ -1381,12 +1365,47 @@ public class SIPCommander implements ISIPCommander {
|
|
|
}
|
|
|
cmdXml.append("</Query>\r\n");
|
|
|
|
|
|
-
|
|
|
|
|
|
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
|
|
|
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()), device.getTransport()));
|
|
|
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public void queryBindCode(Device device, ErrorHook errorHook) throws InvalidArgumentException, SipException, ParseException {
|
|
|
+ StringBuffer cmdXml = new StringBuffer(200);
|
|
|
+ String charset = device.getCharset();
|
|
|
+ cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
|
|
+ cmdXml.append("<Query>\r\n");
|
|
|
+ cmdXml.append("<CmdType>HfyCode</CmdType>\r\n");
|
|
|
+ cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
|
|
+ cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
|
|
+ cmdXml.append("</Query>\r\n");
|
|
|
+
|
|
|
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()), device.getTransport()));
|
|
|
+ if (request == null) {
|
|
|
+ errorHook.run(WVPResult.fail(
|
|
|
+ ErrorCode.ERROR_DATA,
|
|
|
+ "无法获取到对应的sip配置信息,domain:" + device.getDomain()
|
|
|
+ ));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request,
|
|
|
+ (err -> {
|
|
|
+ logger.warn("查询合方圆专属code失败 {}", err.msg);
|
|
|
+ errorHook.run(WVPResult.fail(
|
|
|
+ ErrorCode.ERR_Invite_fail,
|
|
|
+ "命令发送失败: "
|
|
|
+ ));
|
|
|
+ }), e -> {
|
|
|
+ // 这里为例避免一个通道的点播只有一个callID这个参数使用一个固定值
|
|
|
+ ResponseEvent responseEvent = (ResponseEvent) e.event;
|
|
|
+ SIPResponse response = (SIPResponse) responseEvent.getResponse();
|
|
|
+ errorHook.run(WVPResult.success());
|
|
|
+ });
|
|
|
+ errorHook.run(WVPResult.success());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 查询设备配置
|
|
|
*
|
|
@@ -1634,17 +1653,7 @@ public class SIPCommander implements ISIPCommander {
|
|
|
@Override
|
|
|
public void dragZoomCmd(Device device, String channelId, String cmdString) throws InvalidArgumentException, SipException, ParseException {
|
|
|
|
|
|
- StringBuffer dragXml = new StringBuffer(200);
|
|
|
- String charset = device.getCharset();
|
|
|
- dragXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
|
|
- dragXml.append("<Control>\r\n");
|
|
|
- dragXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
|
|
- dragXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
|
|
- if (ObjectUtils.isEmpty(channelId)) {
|
|
|
- dragXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
|
|
- } else {
|
|
|
- dragXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
|
|
- }
|
|
|
+ StringBuffer dragXml = devControlHeaderXml(device, channelId);
|
|
|
dragXml.append(cmdString);
|
|
|
dragXml.append("</Control>\r\n");
|
|
|
|