all : emage change

dev_2.1.0
xueqingkun 1 year ago
parent bbdd341c06
commit d0e77c1b86

@ -149,7 +149,7 @@ public class RasaCmdServiceImpl implements RasaCmdService {
// 3. 尝试停止原先的程序
boolean runIsSuccess = runIsSuccess(outMessageList);
RasaModelInfo dbRasaModelInfo = rasaModeService.queryByModelId(argument.getModelId());
if (null != dbRasaModelInfo.getPort() && runIsSuccess){
if (null != dbRasaModelInfo.getPort() && !dbRasaModelInfo.getPort().equals(port) && runIsSuccess){
log.info("runExec server is up and dbRasaModelInfo is: {}, start kill old server ....",dbRasaModelInfo.getPort());
// 3.1 如果原本的程序已经运行且本次成功启动,杀掉原本的进程
execCmd(ListUtil.toList(shellEnv, getShellPath(RasaConstant.KILL_SHELL), String.valueOf(dbRasaModelInfo.getPort())), s -> false, 20);

@ -32,7 +32,8 @@ public class TalkResultResVO {
@ApiModelProperty("视频base64位编码")
private String videoBase64;
@ApiModelProperty("回复的消息内容,用于调试视频资料内容")
private String answerMessage;
}

@ -49,6 +49,9 @@ public class AskServiceImpl implements AskService {
@Value("${answer.defaultNoMatchId}")
private String defaultNoMatchId;
@Value("${answer.defaultNoMatchAnswerMessage:}")
private String defaultNoMatchAnswerMessage;
@Override
public String receiveVoiceFile(MultipartFile file) {
if (file.getSize() <= 0) {
@ -206,6 +209,7 @@ public class AskServiceImpl implements AskService {
// 如果rasa没有识别出来,则返回默认值
if (StrUtil.isBlank(rasaResult)) {
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(defaultNoMatchId));
talkResultResVO.setVideoBase64(defaultNoMatchAnswerMessage);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, "您好,我没有听懂您说什么");
}
@ -227,6 +231,7 @@ public class AskServiceImpl implements AskService {
if (ObjectUtil.isEmpty(library)) {
log.info("{}:未从问题库中找到,回答未识别语句", rasaResult);
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(defaultNoMatchId));
talkResultResVO.setAnswerMessage(defaultNoMatchAnswerMessage);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, "您好,我没有听懂您说什么");
} else {
AskPatientAnswer askPatientAnswer = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, process.getMedicalRecId())
@ -238,12 +243,14 @@ public class AskServiceImpl implements AskService {
if (StrUtil.isNotEmpty(library.getDefaultAnswer()) && StrUtil.isNotBlank(library.getDefaultAnswerResourceId())) {
String resText = library.getDefaultAnswer();
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(library.getDefaultAnswerResourceId()));
talkResultResVO.setAnswerMessage(library.getDefaultAnswer());
// 保存记录
saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), library, resText);
log.info("{}:找到了默认答案:{}", rasaResult, talkReqVO.getText());
} else {
log.info("{}:没有从默认答案中找到找到默认内容,回复未识别语句", rasaResult);
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(library.getDefaultAnswerResourceId()));
talkResultResVO.setAnswerMessage(library.getDefaultAnswer());
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), library, "您好,我没有听懂您说什么");
}
} else {
@ -254,11 +261,13 @@ public class AskServiceImpl implements AskService {
log.info("{}:病历配置的回答:{}:不为空,但在获取的时候,答案为空,开始回复默认语句,默认语句内容:{}", rasaResult, askPatientAnswer.getId(), resText);
// 这里返回视频
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(library.getDefaultAnswerResourceId()));
talkResultResVO.setAnswerMessage(library.getDefaultAnswer());
// 保存记录
saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), library, resText);
} else {
log.info("{}:病历配置的回答:{}:不为空,但在获取的时候,答案为空,但是获取默认语句也为空,那么回复未识别语句", rasaResult, askPatientAnswer.getId());
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(defaultNoMatchId));
talkResultResVO.setAnswerMessage(defaultNoMatchAnswerMessage);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), library, "您好,我没有听懂您说什么");
}
@ -266,6 +275,7 @@ public class AskServiceImpl implements AskService {
String resText = askPatientAnswer.getAnswer();
log.info("{}:找到了病历配置的回答语句:{},回答内容:{}", rasaResult, askPatientAnswer.getId(), resText);
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(askPatientAnswer.getAnswerResourceId()));
talkResultResVO.setAnswerMessage(askPatientAnswer.getAnswer());
// 保存记录
saveQaRecord(talkReqVO.getProcessId(), "patient", askPatientAnswer.getId(), talkReqVO.getText(), library, resText);
}
@ -301,4 +311,22 @@ public class AskServiceImpl implements AskService {
}
}
private String getAnswerMessageOrDefault(String fileResourceId) {
if (StrUtil.isBlank(fileResourceId)) {
fileResourceId = defaultNoMatchId;
}
FileResource fileResource = fileResourceService.getById(fileResourceId);
if (ObjectUtil.isEmpty(fileResource)) {
log.info("未找到视频,走默认视频");
fileResource = fileResourceService.getById(defaultNoMatchId);
}
try (InputStream inputStream = MinioUtil.download(fileResource.getMinioId())) {
return Base64Encoder.encode(IoUtil.readBytes(inputStream));
} catch (Exception e) {
log.error("获取视频失败", e);
throw new BusinessException("未找到回复视频");
}
}
}

@ -5,7 +5,10 @@ import cn.hutool.core.io.file.PathUtil;
import com.supervision.model.AskPatientAnswer;
import com.supervision.model.AskTemplateQuestionLibrary;
import com.supervision.model.FileResource;
import com.supervision.pojo.vo.TalkResultResVO;
import com.supervision.pojo.vo.TalkVideoReqVO;
import com.supervision.service.AskPatientAnswerService;
import com.supervision.service.AskService;
import com.supervision.service.AskTemplateQuestionLibraryService;
import com.supervision.service.FileResourceService;
import com.supervision.util.MinioUtil;
@ -91,4 +94,20 @@ public class VideoUpdateTest {
}
}
@Autowired
private AskService askService;
@Test
public void talkTest() throws Exception {
TalkVideoReqVO talkVideoReqVO = new TalkVideoReqVO();
talkVideoReqVO.setProcessId("1748165303767572481");
talkVideoReqVO.setText("你哪里不舒服");
TalkResultResVO talkResultResVO = askService.talkByVideo(talkVideoReqVO);
System.out.println(talkResultResVO.getAnswerMessage());
}
}

Loading…
Cancel
Save