diff --git a/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java b/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java index a7182bc1..4a76db21 100644 --- a/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java +++ b/virtual-patient-common/src/main/java/com/supervision/config/ResponseConfig.java @@ -47,7 +47,6 @@ public class ResponseConfig implements ResponseBodyAdvice { @Nullable Class> aClass, @Nullable ServerHttpRequest serverHttpRequest, @Nullable ServerHttpResponse serverHttpResponse) { - if (Objects.isNull(o)) { return GlobalResult.ok(null, "success"); } diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java b/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java index 5642e77c..a35234e7 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/AskController.java @@ -20,28 +20,19 @@ public class AskController { @Autowired private AskService askService; - @ApiOperation("接收页面的语音消息(这个接口使用京东数字人接口来做)") + @ApiOperation("接收页面的语音消息转文字") @PostMapping("/receiveVoiceFile") public String receiveVoiceFile(@RequestParam("file") MultipartFile file) { return askService.receiveVoiceFile(file); } - @ApiOperation("接收页面的语音消息(这个接口使用京东数字人接口来做)") + @ApiOperation("使用京东数字人进行对话(这个接口使用京东数字人接口来做)") @PostMapping("/talk") - public TalkResultResVO talk(TalkReqVO talkReqVO) throws IOException { + public TalkResultResVO talk(@RequestBody TalkReqVO talkReqVO) throws IOException { return askService.talk(talkReqVO); } - @ApiOperation("回复语音及文字消息") - @GetMapping("replyVoice") - public String replyVoice() { - return askService.replyVoice(); - } - - @ApiOperation("查询对话历史") - public void queryAskHistory(String processId) { - } } diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/AskPhysicalController.java b/virtual-patient-web/src/main/java/com/supervision/controller/AskPhysicalController.java index 7b68e79d..c58ffb9d 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/AskPhysicalController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/AskPhysicalController.java @@ -32,7 +32,7 @@ public class AskPhysicalController { return askPhysicalService.queryPhysicalToolList(); } - @ApiOperation(value = "查询体格检查的结果") + @ApiOperation(value = "查询体格检查的结果(执行体格检查)") @GetMapping("queryAskPhysicalResult") public DiagnosisPhysicalRecord queryAskPhysicalResult(AskPhysicalResultReqVO reqVO) { return askPhysicalService.queryAskPhysicalResult(reqVO); diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/TalkResultResVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/TalkResultResVO.java index e3f57549..6cfb84ef 100644 --- a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/TalkResultResVO.java +++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/TalkResultResVO.java @@ -6,13 +6,12 @@ import lombok.Data; @Data public class TalkResultResVO { - @ApiModelProperty("若有动作,这是需要执行的动作内容") - private ActionDTO action; - /** - * 后端返回给前端时使用,表示该是语音回复还是action动作,1语音回复,2动作 + * 后端返回给前端时使用,表示该是语音回复还是action动作,1语音回复,2体格检查 3辅助检查 */ - @ApiModelProperty("后端返回给前端时使用,表示该是语音回复还是action动作,1语音回复,2动作") + @ApiModelProperty("后端返回给前端时使用,表示该是语音回复还是action动作,1语音回复,2体格检查 3辅助检查") private Integer type; + private String actionId; + } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java index d172686f..6822fb52 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java @@ -38,7 +38,7 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { diagnosisPrimaryService.save(reqVO); // 将process关联的所有的患者描述全部都修改 diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getPatientDiseaseInfo,reqVO.getPatientDiseaseInfo()) - .eq(DiagnosisPrimary::getId,reqVO.getProcessId()).update(); + .eq(DiagnosisPrimary::getProcessId,reqVO.getProcessId()).update(); } @Override diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java index cfdb0d30..5f5bd20d 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskServiceImpl.java @@ -79,12 +79,9 @@ public class AskServiceImpl implements AskService { log.info("呼出语句:{}", rasaResult); List actionList = StrUtil.split(rasaResult, '_'); if (actionList.size() > 1) { - ActionDTO actionDTO = new ActionDTO(); - actionDTO.setActionType(actionList.get(0)); - actionDTO.setActionId(actionList.get(1)); // 在这里给socket回复,设置为动作 - talkResultResVO.setAction(actionDTO); - talkResultResVO.setType(2); + talkResultResVO.setActionId(actionList.get(1)); + talkResultResVO.setType("ancillary".equals(actionList.get(0)) ? 3 : 2); return talkResultResVO; } } else { diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java index 29e70f80..9d849132 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/RasaServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -230,7 +231,7 @@ public class RasaServiceImpl implements RasaService { public GlobalResult trainRasa(String patientId) throws JsonProcessingException { Map param = new HashMap<>(); param.put("modelId", patientId); - String responseBody = HttpUtil.post(trainRasaUrl, param); + String responseBody = HttpUtil.post(trainRasaUrl, JSONUtil.toJsonStr(param)); return objectMapper.readValue(responseBody, new TypeReference>() { }); } @@ -239,7 +240,7 @@ public class RasaServiceImpl implements RasaService { public GlobalResult runRasa(String patientId) throws JsonProcessingException { Map param = new HashMap<>(); param.put("modelId", patientId); - String responseBody = HttpUtil.post(runRasaUrl, param); + String responseBody = HttpUtil.post(runRasaUrl, JSONUtil.toJsonStr(param)); return objectMapper.readValue(responseBody, new TypeReference>() { }); } diff --git a/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java b/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java index aca9bd4a..420be126 100644 --- a/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java +++ b/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java @@ -3,7 +3,12 @@ package com.supervision.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.supervision.pojo.paddlespeech.res.AsrResultDTO; +import com.supervision.pojo.paddlespeech.res.PaddleSpeechResDTO; import com.supervision.pojo.rasa.train.dto.RasaReqDTO; import com.supervision.pojo.rasa.train.dto.RasaResDTO; import com.supervision.vo.rasa.RasaTalkVo; @@ -16,7 +21,7 @@ import java.util.stream.Collectors; @Slf4j public class RasaUtil { - private static final Environment environment = SpringBeanUtil.getBean(Environment.class); + private static final Environment environment = SpringBeanUtil.getBean(Environment.class); private static final String RASA_TALK_URL = environment.getProperty("rasa.base-url") + environment.getProperty("rasa.talk"); public static String talkRasa(String question, String sessionId, String patientId) { @@ -25,12 +30,18 @@ public class RasaUtil { rasaTalkVo.setSessionId(sessionId); rasaTalkVo.setModelId(patientId); String post = HttpUtil.post(RASA_TALK_URL, JSONUtil.toJsonStr(rasaTalkVo)); - List list = JSONUtil.toList(post, String.class); - log.info("调用rasa对话返回结果:{}",post); - if (CollUtil.isEmpty(list)){ - return "对不起,我没有听懂您说的是什么意思"; + log.info("调用rasa对话返回结果:{}", post); + try { + JSONObject entries = JSONUtil.parseObj(post); + List list = JSONUtil.toList(entries.getStr("data"), String.class); + if (CollUtil.isEmpty(list)) { + return "对不起,我没有听懂您说的是什么意思"; + } + return CollUtil.getFirst(list); + } catch (Exception e) { + log.error("talkRasa error ", e); } - return CollUtil.getFirst(list); + return "对不起,我没有听懂您说的是什么意思"; } diff --git a/virtual-patient-web/src/main/resources/application.yml b/virtual-patient-web/src/main/resources/application.yml index 8da7ea82..a5a70540 100644 --- a/virtual-patient-web/src/main/resources/application.yml +++ b/virtual-patient-web/src/main/resources/application.yml @@ -62,7 +62,7 @@ paddle-speech: tts: http://192.168.10.137:8090/paddlespeech/tts asr: http://192.168.10.137:8090/paddlespeech/asr rasa: - base-url: http://192.168.10.137:8890/ + base-url: http://192.168.10.137:8890/virtual-patient-rasa/ talk: rasa/talkRasa saveRasaFile: rasaFile/saveRasaFile train: rasaCmd/trainExec