From 5fff0c7fb42e8bce2de55456d4f92d826a8389de Mon Sep 17 00:00:00 2001 From: wulin Date: Thu, 26 Oct 2023 15:20:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E6=B0=94=E5=BC=82=E5=B8=B8=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qiuguo/iot/base/enums/AskTypeEnum.java | 1 + .../entity/device/DeviceUserBindEntity.java | 4 ++++ .../request/device/DeviceUserBindRequest.java | 5 +++++ .../data/resp/device/DeviceUserBindResp.java | 5 +++++ .../service/device/DeviceUserBindService.java | 10 ++++++++++ .../iot/third/service/AudioService.java | 4 ++-- .../iot/third/service/WeatherService.java | 2 +- .../websocket/api/command/ActionCommand.java | 19 ++----------------- .../box/websocket/api/domain/BaseSession.java | 5 +++++ .../api/{command => domain}/QueueMessage.java | 2 +- .../websocket/api/domain/box/BoxSession.java | 5 +---- .../api/domain/box/resp/BoxMessageResp.java | 6 ++++++ .../api/handler/BoxWebSocketHandler.java | 10 ++++++++++ .../api/service/BaseWebSocketService.java | 12 +++++++++--- 14 files changed, 62 insertions(+), 28 deletions(-) rename iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/{command => domain}/QueueMessage.java (88%) diff --git a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/enums/AskTypeEnum.java b/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/enums/AskTypeEnum.java index 34a5910..103cd27 100644 --- a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/enums/AskTypeEnum.java +++ b/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/enums/AskTypeEnum.java @@ -23,6 +23,7 @@ public enum AskTypeEnum { BOX_OFF_LINE(102, "Box离线"), DEVICE_UNBIND(103, "设备解绑"), DEVICE_BIND(104, "设备绑定成功"), + BOX_OPT(105, "推送Box配置给Box"), COMMAND_N(200, "指令后必须跟的名称词"), QIU_GUO(300, "秋果专有名词"), USER_CONFIG(301, "根据用户编号回答不同"), diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java index 194a866..2eb1bb9 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/entity/device/DeviceUserBindEntity.java @@ -103,4 +103,8 @@ public class DeviceUserBindEntity extends GenericEntity { @Column(name = "tts", length = 11) private String tts; + @Comment("Box的配置Json格式,固定音频地址") + @Column(name = "box_opt", length = 11) + private String boxOpt; + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java index b62d6b6..982bf5b 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/request/device/DeviceUserBindRequest.java @@ -84,5 +84,10 @@ public class DeviceUserBindRequest implements java.io.Serializable { */ private String tts; + /** + *Box的配置Json格式,固定音频地址 + */ + private String boxOpt; + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java index 5d68d8d..222aac9 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/resp/device/DeviceUserBindResp.java @@ -99,4 +99,9 @@ public class DeviceUserBindResp { */ private String tts; + /** + *Box的配置Json格式,固定音频地址 + */ + private String boxOpt; + } \ No newline at end of file diff --git a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java index 9722482..253937f 100644 --- a/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java +++ b/iot-common/iot-data/src/main/java/com/qiuguo/iot/data/service/device/DeviceUserBindService.java @@ -112,6 +112,9 @@ public class DeviceUserBindService extends GenericReactiveCrudService getAudioUrl(String v){ + public Mono getAudioUrl(String v, String scl){ AudioRequest request = new AudioRequest(); request.setData(new ArrayList<>(4)); request.getData().add(v); - request.getData().add("scl"); + request.getData().add(scl); request.getData().add("简体中文"); request.getData().add(1); diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/WeatherService.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/WeatherService.java index 3bd5c82..a2040bc 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/WeatherService.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/WeatherService.java @@ -44,7 +44,7 @@ public class WeatherService { @Value("https://api.caiyunapp.com/v2.6/ilUeAnf1vNkphxYS/") private String queryWeatherUrl; - @Value("tianqiapi.url:") + @Value("${tianqiapi.url:}") private String tianqiUrl; @Resource diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/command/ActionCommand.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/command/ActionCommand.java index 8c1009d..3a3bae8 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/command/ActionCommand.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/command/ActionCommand.java @@ -1,41 +1,26 @@ package com.qiuguo.iot.box.websocket.api.command; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson.JSONObject; import com.qiuguo.iot.base.constans.Log4Constans; import com.qiuguo.iot.base.enums.*; import com.qiuguo.iot.base.utils.StringUtils; -import com.qiuguo.iot.box.websocket.api.domain.BaseMessageResp; import com.qiuguo.iot.box.websocket.api.domain.BaseSession; +import com.qiuguo.iot.box.websocket.api.domain.QueueMessage; import com.qiuguo.iot.box.websocket.api.domain.box.BoxSession; -import com.qiuguo.iot.box.websocket.api.domain.box.resp.BoxMessageResp; -import com.qiuguo.iot.box.websocket.api.domain.user.UserSession; import com.qiuguo.iot.box.websocket.api.filter.LogMdcConfiguration; -import com.qiuguo.iot.box.websocket.api.filter.LogWebFilter; import com.qiuguo.iot.box.websocket.api.service.BaseWebSocketService; import com.qiuguo.iot.data.constants.YunxiRabbitConst; -import com.qiuguo.iot.data.entity.device.DeviceUserTalkRecordEntity; import com.qiuguo.iot.data.request.qwen.TongYiCommunicationRest; -import com.qiuguo.iot.data.service.device.DeviceUserBindService; -import com.qiuguo.iot.data.service.device.DeviceUserTalkRecordService; import com.qiuguo.iot.data.service.mq.MqService; -import com.qiuguo.iot.data.service.system.SystemTalkBindDeviceService; -import com.qiuguo.iot.data.service.system.SystemTalkBindU3dService; -import com.qiuguo.iot.data.service.system.SystemTalkBindUserService; import com.qiuguo.iot.third.nlp.action.Action; import com.qiuguo.iot.third.nlp.action.Actions; import com.qiuguo.iot.third.service.*; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.SpringApplication; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; import javax.annotation.Resource; -import java.util.LinkedList; -import java.util.Queue; @Slf4j public abstract class ActionCommand { @@ -93,7 +78,7 @@ public abstract class ActionCommand { String message = ""; if(queue.getQueue().size() > 0){ message = queue.getQueue().poll(); - message = baseWebSocketService.getSendStr(sb, message); + message = baseWebSocketService.getSendStr(sb, message, false); }else if(queue.getStatus() == YesNo.NO.getCode().intValue()){ if(sb.length() == 0){ //结束了 diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/BaseSession.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/BaseSession.java index 62e5183..e109463 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/BaseSession.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/BaseSession.java @@ -48,4 +48,9 @@ public class BaseSession { * 问题Id,每次++ */ protected Long requestId = 0L; + + /** + * TTS合成声音的声音标识 + */ + String ttsId; } diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/command/QueueMessage.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/QueueMessage.java similarity index 88% rename from iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/command/QueueMessage.java rename to iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/QueueMessage.java index ba4d47f..a9e0c28 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/command/QueueMessage.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/QueueMessage.java @@ -1,4 +1,4 @@ -package com.qiuguo.iot.box.websocket.api.command; +package com.qiuguo.iot.box.websocket.api.domain; import lombok.Data; diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/BoxSession.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/BoxSession.java index f7b20e4..1e72b06 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/BoxSession.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/BoxSession.java @@ -6,10 +6,7 @@ import lombok.Data; @Data public class BoxSession extends BaseSession { - /** - * TTS合成声音的声音标识 - */ - String ttsId; + /** * 阿里token */ diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/resp/BoxMessageResp.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/resp/BoxMessageResp.java index 99284ac..b4901a7 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/resp/BoxMessageResp.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/domain/box/resp/BoxMessageResp.java @@ -1,5 +1,6 @@ package com.qiuguo.iot.box.websocket.api.domain.box.resp; +import com.alibaba.fastjson.JSONObject; import com.qiuguo.iot.box.websocket.api.domain.BaseMessageResp; import com.qiuguo.iot.data.resp.third.MusicResp; import lombok.Data; @@ -29,4 +30,9 @@ public class BoxMessageResp extends BaseMessageResp { * 音频播放地址 */ String audio; + + /** + * Box相关配置 + */ + JSONObject boxOpt; } diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java index 5e4fa02..567391f 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BoxWebSocketHandler.java @@ -6,11 +6,13 @@ import com.qiuguo.iot.base.constans.HttpHeaderConstans; import com.qiuguo.iot.base.constans.RedisConstans; import com.qiuguo.iot.base.enums.*; import com.qiuguo.iot.base.model.UserDeviceInfoModel; +import com.qiuguo.iot.base.utils.StringUtils; import com.qiuguo.iot.box.websocket.api.command.ActionCommand; import com.qiuguo.iot.box.websocket.api.config.properties.LacProperties; import com.qiuguo.iot.box.websocket.api.domain.BaseSession; import com.qiuguo.iot.box.websocket.api.domain.box.BoxSession; import com.qiuguo.iot.box.websocket.api.domain.box.BoxTalkMessage; +import com.qiuguo.iot.box.websocket.api.domain.box.resp.BoxMessageResp; import com.qiuguo.iot.box.websocket.api.filter.LogMdcConfiguration; import com.qiuguo.iot.box.websocket.api.filter.LogWebFilter; import com.qiuguo.iot.box.websocket.api.service.BaseWebSocketService; @@ -194,6 +196,14 @@ public class BoxWebSocketHandler implements WebSocketHandler { if(oldBoxSession != null){ return baseWebSocketService.closeSendMsg(oldBoxSession, "您在其他地方登录", AskTypeEnum.TTS.getCode()); } + if(StringUtils.isNotEmpty(db.getBoxOpt())){ + log.info("推送配置给Box:{}", db.getBoxOpt()); + BoxMessageResp resp = new BoxMessageResp(); + resp.setType(AskTypeEnum.BOX_OPT.getCode()); + resp.setBoxOpt(JSONObject.parseObject(db.getBoxOpt())); + baseWebSocketService.sendMsg(boxSession, JSONObject.toJSONString(resp)); + } + return Mono.empty(); }); } diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/service/BaseWebSocketService.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/service/BaseWebSocketService.java index 116fdca..41a4075 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/service/BaseWebSocketService.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/service/BaseWebSocketService.java @@ -101,8 +101,12 @@ public class BaseWebSocketService { * @param message * @return */ - public String getSendStr(StringBuilder sb, String message){ + public String getSendStr(StringBuilder sb, String message, Boolean isEnd){ String old = sb.toString() + message; + if(isEnd){ + sb.setLength(0); + return old; + } int d = old.lastIndexOf(","); int j = old.lastIndexOf("。"); int a = old.lastIndexOf(":"); @@ -330,7 +334,7 @@ public class BaseWebSocketService { if(n == length){ status = 1; } - message = getSendStr(builder, message); + message = getSendStr(builder, message, status == 1 ? true : false); int m = n; if(StringUtils.isNotEmpty(message)){ BoxMessageResp boxMessageResp = new BoxMessageResp(); @@ -361,7 +365,9 @@ public class BaseWebSocketService { sendMsg(baseSession, JSONObject.toJSONString(boxMessageResp)); return Mono.just(""); } - return audioService.getAudioUrl(boxMessageResp.getText()).map(s ->{ + return audioService.getAudioUrl(boxMessageResp.getText(), + StringUtils.isNotEmpty(baseSession.getTtsId()) ? baseSession.getTtsId() : "scl" + ).map(s ->{ boxMessageResp.setAudio(s); sendMsg(baseSession, JSONObject.toJSONString(boxMessageResp));