From ef5cbad1ef1c7190cd59eb8c79267c958320d858 Mon Sep 17 00:00:00 2001 From: wulin Date: Wed, 18 Oct 2023 16:14:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AE=97=E6=B3=95=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=E5=90=88=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qiuguo/iot/base/date/DateEnum.java | 421 +++++++++++++++--- .../iot/third/nlp/action/ActionTime.java | 99 ++++ .../iot/third/request/AudioRequest.java | 12 + .../iot/third/service/AudioService.java | 55 +++ .../qiuguo/iot/third/service/NlpService.java | 4 + .../api/domain/box/resp/BoxMessageResp.java | 5 + .../api/handler/BaseWebSocketProcess.java | 16 +- 7 files changed, 556 insertions(+), 56 deletions(-) create mode 100644 iot-common/iot-third/src/main/java/com/qiuguo/iot/third/request/AudioRequest.java create mode 100644 iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/AudioService.java diff --git a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/date/DateEnum.java b/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/date/DateEnum.java index 0a4c536..6a3643e 100644 --- a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/date/DateEnum.java +++ b/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/date/DateEnum.java @@ -1,6 +1,8 @@ package com.qiuguo.iot.base.date; import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; public enum DateEnum implements IDate{ //现在,今天,明天,后天,昨天,前天,*天后,*天, @@ -11,6 +13,106 @@ public enum DateEnum implements IDate{ //*小时 //*秒 + /** + * 早上 + */ + MONRING("早上"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withHour(6); + } + + }, + /** + * 早晨 + */ + MONRING_M("早晨"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return MONRING.getDateTime(localDateTime); + } + + }, + /** + * 拂晓 + */ + DAWN("拂晓"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return MONRING.getDateTime(localDateTime); + } + + }, + /** + * 上午 + */ + AM("上午"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withHour(9); + } + + }, + /** + * 中午 + */ + NOON("中午"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withHour(12); + } + + }, + /** + * 下午 + */ + PM("下午"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withMonth(15); + } + + }, + /** + * 傍晚 + */ + EVENING("傍晚"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withMonth(18); + } + + }, + /** + * 晚上 + */ + NIGHT("晚上"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withHour(21); + } + + }, + /** + * 深夜 + */ + DEEP_NIGHT("深夜"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withHour(23); + } + + }, + /** + * 凌晨 + */ + BEFORE_DAWN("凌晨"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withHour(1); + } + + }, /** * 今天 */ @@ -53,7 +155,7 @@ public enum DateEnum implements IDate{ }, /** - * 明天 + * 前天 */ BEFOR_YESTERDAY("前天"){ @Override @@ -71,6 +173,147 @@ public enum DateEnum implements IDate{ return localDateTime.minusDays(-2); } + }, + /** + * 今年 + */ + THIS_YEAR("今年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withMonth(3); + } + + }, + /** + * 下半年 + */ + NEXT_HALF_YEAR("下半年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.withMonth(10); + } + + }, + /** + * 上半年 + */ + LAST_HALF_YEAR("上半年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime; + } + + }, + + /** + * 明年 + */ + NEXT_YEAR("明年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.minusYears(-1); + } + + }, + /** + * 去年 + */ + LAST_YEAR("去年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.minusYears(1); + } + + }, + /** + * 下个年 + */ + NEXT_Y_YEAR("下个年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return NEXT_YEAR.getDateTime(localDateTime); + } + + }, + /** + * 下年 + */ + NEXT__YEAR("下年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return NEXT_YEAR.getDateTime(localDateTime); + } + + }, + /** + * 上个年 + */ + LAST_Y_YEAR("上个年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return LAST_YEAR.getDateTime(localDateTime); + } + + }, + /** + * 前年 + */ + BEFOR_YEAR("前年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.minusYears(2); + } + + }, + /** + * 后年 + */ + AFTER_YEAR("后年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.minusYears(-2); + } + + }, + /** + * 下月 + */ + NEXT_MONTH("下月"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.minusMonths(-1); + } + + }, + /** + * 上月 + */ + LAST_MONTH("上月"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return LAST_MONTH.getDateTime(localDateTime); + } + + }, + /** + * 下个月 + */ + NEXT_M_MONTH("下个月"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return NEXT_MONTH.getDateTime(localDateTime); + } + + }, + /** + * 上个年 + */ + LAST_M_MONTH("去年"){ + @Override + public LocalDateTime getDateTime(LocalDateTime localDateTime){ + return localDateTime.minusYears(1); + } + }, /** * n天后 @@ -83,112 +326,82 @@ public enum DateEnum implements IDate{ }, /** - * n天 + * 国庆节 */ - N_DAY("天"){ + GUO_QING_JIE("国庆节"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return localDateTime.withMonth(10).withDayOfMonth(1); } }, /** - * N月后 + * 国庆 */ - N_AFTER_MONTH("月后"){ + GUO_QIN("国庆"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return GUO_QING_JIE.getDateTime(localDateTime); } }, /** - * N月 + * 元旦节 */ - N_MONTH("月"){ + NEW_YEAR("元旦节"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return localDateTime.withMonth(1).withDayOfMonth(1); } }, /** - * N年后 + * 元旦 */ - N_AFTER_YEAR("年后"){ + NEW_Y_YEAR("元旦"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return NEW_Y_YEAR.getDateTime(localDateTime); } }, /** - * N年 + * 五一 */ - N_YEAR("年"){ + WU_YI("五一"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return localDateTime.withMonth(5).withDayOfMonth(1); } }, /** - * N小时后 + * 五一劳动节 */ - N_AFTER_HOUR("小时后"){ + WU_Y_YI("五一劳动节"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return WU_YI.getDateTime(localDateTime); } }, /** - * N小时 + * 六一 */ - N_HOUR("小时"){ + LIU_YI("六一"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return localDateTime.withMonth(6).withDayOfMonth(1); } }, /** - * N分钟后 + * 六一儿童节 */ - N_AFTER_MINUTE("分钟后"){ + LIU_Y_YI("六一儿童节"){ @Override public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); - } - - }, - /** - * N分钟 - */ - N_MINUTE("分钟"){ - @Override - public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); - } - - }, - /** - * N秒后 - */ - N_AFTER_SECOND("秒后"){ - @Override - public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); - } - - }, - /** - * N秒 - */ - N_SECOND("秒"){ - @Override - public LocalDateTime getDateTime(LocalDateTime localDateTime){ - return localDateTime.minusDays(-2); + return LIU_YI.getDateTime(localDateTime); } }, @@ -203,6 +416,8 @@ public enum DateEnum implements IDate{ ; Date date; String code; + + String time; DateEnum(String c) { code = c; } @@ -214,6 +429,102 @@ public enum DateEnum implements IDate{ return dateEnum; } } + if(c.contains("天后")){ + c = c.replace("天后", ""); + }else if(c.contains("天前")){ + c = c.replace("天前", ""); + }else if(c.contains("天")){ + c = c.replace("天", ""); + }else if(c.contains("个月后")){ + c = c.replace("个月后", ""); + }else if(c.contains("个月前")){ + c = c.replace("个月前", ""); + }else if(c.contains("个月")){ + c = c.replace("个月", ""); + }else if(c.contains("月后")){ + c = c.replace("月后", ""); + }else if(c.contains("月前")){ + c = c.replace("月前", ""); + }else if(c.contains("月份")){ + c = c.replace("月份", ""); + }else if(c.contains("月")){ + c = c.replace("月", ""); + }else if(c.contains("年后")){ + c = c.replace("年后", ""); + }else if(c.contains("年前")){ + c = c.replace("年前", ""); + }else if(c.contains("年")){ + c = c.replace("年", ""); + }else if(c.contains("小时后")){ + c = c.replace("小时后", ""); + }else if(c.contains("小时前")){ + c = c.replace("小时前", ""); + }else if(c.contains("小时")){ + c = c.replace("小时", ""); + }else if(c.contains("点钟后")){ + c = c.replace("点钟后", ""); + }else if(c.contains("点钟前")){ + c = c.replace("点钟前", ""); + }else if(c.contains("点钟")){ + c = c.replace("点钟", ""); + }else if(c.contains("点前")){ + c = c.replace("点前", ""); + }else if(c.contains("点后")){ + c = c.replace("点后", ""); + }else if(c.contains("点")){ + c = c.replace("点", ""); + }else if(c.contains("时后")){ + c = c.replace("时后", ""); + }else if(c.contains("时前")){ + c = c.replace("时前", ""); + }else if(c.contains("时")){ + c = c.replace("时", ""); + }else if(c.contains("分钟后")){ + c = c.replace("分钟后", ""); + }else if(c.contains("分钟前")){ + c = c.replace("分钟前", ""); + }else if(c.contains("分钟")){ + c = c.replace("分钟", ""); + }else if(c.contains("秒后")){ + c = c.replace("秒后", ""); + }else if(c.contains("秒前")){ + c = c.replace("秒前", ""); + }else if(c.contains("秒")){ + c = c.replace("秒", ""); + }else if(c.contains("周")){//一周,周一 + c = c.replace("周", ""); + }else if(c.contains("星期")){//一星期 星期一 + c = c.replace("星期", ""); + }else{ + //24节气,调用网络接口 + } + Integer n = 1; + try{ + n = Integer.parseInt(c); + }catch(Exception e){ + //含有中文 + Map chineseToArib = new HashMap<>(); + chineseToArib.put("个", 1); + chineseToArib.put("十", 10); + chineseToArib.put("百", 100); + chineseToArib.put("千", 1000); + chineseToArib.put("万", 10000); + chineseToArib.put("亿", 100000000); + chineseToArib.put("一", 1); + chineseToArib.put("二", 2); + chineseToArib.put("三", 3); + chineseToArib.put("四", 4); + chineseToArib.put("五", 5); + chineseToArib.put("六", 6); + chineseToArib.put("七", 7); + chineseToArib.put("八", 8); + chineseToArib.put("九", 9); + char[] ch = new char[c.length()]; + c.getChars(0, c.length(), ch, 0); + + } + + //中英文数字 return DEFAULT; } } diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/action/ActionTime.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/action/ActionTime.java index c78ba8a..71e89bb 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/action/ActionTime.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/action/ActionTime.java @@ -1,11 +1,16 @@ package com.qiuguo.iot.third.nlp.action; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.qiuguo.iot.base.date.DateEnum; import com.qiuguo.iot.base.utils.StringUtils; import lombok.Data; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.Map; @Data public class ActionTime { @@ -52,7 +57,101 @@ public class ActionTime { detailTime = localDateTime; dateTime = localDateTime.format(df); dateDetailTime = localDateTime.format(df1); + } + public static void main(String[] args) { + JSONObject json = JSON.parseObject("{\"data\":[\"Success\",{\"name\":\"/data/wzg/vits_results/089135a743d4d438ecda93263174ab0cfe5dff0a/audio.wav\",\"data\":null,\"is_file\":true}],\"is_generating\":false,\"duration\":0.3392457962036133,\"average_duration\":0.5043019453684489}"); + JSONArray array = json.getJSONArray("data"); + json = array.getJSONObject(1); + String m = json.getString("name"); + DateTimeFormatter df1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime localDateTime = LocalDateTime.now(); + localDateTime = DateEnum.getWithCode("国庆").getDateTime(DateEnum.getWithCode("拂晓").getDateTime(localDateTime)); + System.out.println(localDateTime.format(df1)); + int n = 1; + Map chineseToArib1 = new HashMap<>(); + chineseToArib1.put("个", 1); + chineseToArib1.put("十", 10); + chineseToArib1.put("百", 100); + chineseToArib1.put("千", 1000); + chineseToArib1.put("万", 10000); + chineseToArib1.put("亿", 100000000); + + Map chineseToArib = new HashMap<>(); + chineseToArib.put("一", 1); + chineseToArib.put("二", 2); + chineseToArib.put("三", 3); + chineseToArib.put("四", 4); + chineseToArib.put("五", 5); + chineseToArib.put("六", 6); + chineseToArib.put("七", 7); + chineseToArib.put("八", 8); + chineseToArib.put("九", 9); + chineseToArib.put("零", 0); + chineseToArib.put("1", 1); + chineseToArib.put("2", 2); + chineseToArib.put("3", 3); + chineseToArib.put("4", 4); + chineseToArib.put("5", 5); + chineseToArib.put("6", 6); + chineseToArib.put("7", 7); + chineseToArib.put("8", 8); + chineseToArib.put("9", 9); + chineseToArib.put("0", 0); + String c = "一"; + char[] ch = new char[c.length()]; + c.getChars(0, c.length(), ch, 0); + Integer p = 1; + String v = String.valueOf(n); + String key; + for(char h : ch){ + key = String.valueOf(h); + if(chineseToArib1.containsKey(key)){ + p = chineseToArib.get(key); + }else if(chineseToArib.containsKey(key)){ + n *= p; + } + } + c = "一十二"; + ch = new char[c.length()]; + c.getChars(0, c.length(), ch, 0); + p = 1; + n = 1; + v = String.valueOf(n); + for(char h : ch){ + if(chineseToArib1.containsKey(String.valueOf(h))){ + p = chineseToArib.get(String.valueOf(h)); + }else if(chineseToArib.containsKey(String.valueOf(h))){ + n *= p; + } + } + c = "十一"; + ch = new char[c.length()]; + c.getChars(0, c.length(), ch, 0); + p = 1; + n = 1; + v = String.valueOf(n); + for(char h : ch){ + if(chineseToArib1.containsKey(h)){ + p = chineseToArib.get(h); + }else if(chineseToArib.containsKey(h)){ + n *= p; + } + } + c = "一百零三"; + ch = new char[c.length()]; + c.getChars(0, c.length(), ch, 0); + p = 1; + n = 1; + v = String.valueOf(n); + for(char h : ch){ + if(chineseToArib1.containsKey(h)){ + p = chineseToArib.get(h); + }else if(chineseToArib.containsKey(h)){ + n *= p; + } + } + System.out.println(v); } } diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/request/AudioRequest.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/request/AudioRequest.java new file mode 100644 index 0000000..9ae4a86 --- /dev/null +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/request/AudioRequest.java @@ -0,0 +1,12 @@ +package com.qiuguo.iot.third.request; + +import lombok.Data; + +import java.util.List; + +@Data +public class AudioRequest { + + List data; + Integer fn_index = 0; +} diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/AudioService.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/AudioService.java new file mode 100644 index 0000000..ee5c340 --- /dev/null +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/AudioService.java @@ -0,0 +1,55 @@ +package com.qiuguo.iot.third.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.qiuguo.iot.base.enums.DeviceTypeEnum; +import com.qiuguo.iot.base.enums.KeyTypeEnum; +import com.qiuguo.iot.base.utils.StringUtils; +import com.qiuguo.iot.base.utils.WebClientUtils; +import com.qiuguo.iot.data.entity.device.DeviceUserBindEntity; +import com.qiuguo.iot.data.entity.system.SystemTalkAnswerConfigEntity; +import com.qiuguo.iot.data.request.device.DeviceUserBindRequest; +import com.qiuguo.iot.data.service.device.DeviceUserBindService; +import com.qiuguo.iot.data.service.system.SystemTalkAnswerConfigService; +import com.qiuguo.iot.third.enums.ChinesePartSpeechEnum; +import com.qiuguo.iot.third.nlp.NlpKey; +import com.qiuguo.iot.third.nlp.action.Action; +import com.qiuguo.iot.third.nlp.action.Actions; +import com.qiuguo.iot.third.nlp.entity.SystemTalkKeyAndDeviceName; +import com.qiuguo.iot.third.request.AudioRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import reactor.core.publisher.Mono; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +/** + * 算法提供的语音合成 + */ +@Service +@Slf4j +public class AudioService { + public Mono getAudioUrl(String v){ + AudioRequest request = new AudioRequest(); + request.setData(new ArrayList<>(4)); + request.getData().add(v); + request.getData().add("zxo"); + request.getData().add("简体中文"); + request.getData().add(1); + /*String[] data = new String[3]; + data[0] = v; + data[1] = "zxo"; + data[2] = "简体中文"; + request.setData(data);*/ + + return WebClientUtils.post("http://192.168.8.211:18000/run/predict", (JSONObject)JSONObject.toJSON(request)).flatMap(jsonObject -> { + JSONArray array = jsonObject.getJSONArray("data"); + jsonObject = array.getJSONObject(1); + String m = jsonObject.getString("name").replaceAll("/data/wzg/vits_results", "http://192.168.8.211:8880"); + return Mono.just(m); + }); + } +} diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/NlpService.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/NlpService.java index fd30d2e..f3ad4c5 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/NlpService.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/NlpService.java @@ -123,6 +123,10 @@ public class NlpService { for (NlpKey key : nlp.getKeys() ) { + if(key.getKey().equals(" ")){ + //空格跳过 + continue; + } action = ChinesePartSpeechEnum.getEnumWithCode(key.getType()).getAction(systemTalkAnswerConfigService.getSystemTalkWithKeyGroup(), key.getKey(), actions, 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 024d7f9..99284ac 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 @@ -24,4 +24,9 @@ public class BoxMessageResp extends BaseMessageResp { * 时间 */ DateTimeResp time; + + /** + * 音频播放地址 + */ + String audio; } diff --git a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java index 04faef5..8e348e2 100644 --- a/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java +++ b/iot-modules/iot-box-websocket-api/src/main/java/com/qiuguo/iot/box/websocket/api/handler/BaseWebSocketProcess.java @@ -85,6 +85,9 @@ public class BaseWebSocketProcess { @Autowired protected MqService mqService; + @Autowired + AudioService audioService; + @Autowired protected SystemTalkBindU3dService systemTalkBindU3dService; @@ -708,7 +711,18 @@ public class BaseWebSocketProcess { private void sendMsg(BaseSession baseSession, String msg) { log.info("推到终端:{},SN:{},userId:{},消息内容:{}", baseSession.getSessionType(), baseSession.getSn(), baseSession.getUserId(), msg); - baseSession.getSink().next(baseSession.getSession().textMessage(msg)); + if(this instanceof BoxWebSocketHandler){ + BoxMessageResp boxMessageResp = JSONObject.parseObject(msg, BoxMessageResp.class); + audioService.getAudioUrl(boxMessageResp.getText()).map(s ->{ + log.info("音频地址:{}", s); + boxMessageResp.setAudio(s); + baseSession.getSink().next(baseSession.getSession().textMessage(JSONObject.toJSONString(boxMessageResp))); + return s; + }).subscribe(); + }else{ + baseSession.getSink().next(baseSession.getSession().textMessage(msg)); + } + }