|
|
|
@ -76,6 +76,9 @@ public class RobotTalkServiceImpl implements RobotTalkService {
|
|
|
|
|
.answerInfo(AnswerInfo.builder().contentType(robotTalkReq.getAnswerType()).build())
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
// 获取机器人配置
|
|
|
|
|
IrRobotConfig config = irRobotConfigService.lambdaQuery().one();
|
|
|
|
|
|
|
|
|
|
// 确认弹框信息
|
|
|
|
|
if (StrUtil.isNotEmpty(robotTalkReq.getAskId())){
|
|
|
|
|
IrSessionHistory sessionHistory = sessionService.lambdaQuery().eq(IrSessionHistory::getId, robotTalkReq.getAskId()).one();
|
|
|
|
@ -86,15 +89,32 @@ public class RobotTalkServiceImpl implements RobotTalkService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 提取信息中的关键信息
|
|
|
|
|
if (Boolean.FALSE.equals(robotTalkReq.isConfirmFlag())){
|
|
|
|
|
// 匹配问题意图
|
|
|
|
|
MatchQuestionAnswerDTO matchQuestionAnswerDTO = matchQuestionAnswer(robotTalkReq.getMessage());
|
|
|
|
|
if (Objects.nonNull(matchQuestionAnswerDTO)){
|
|
|
|
|
List<ParamCheckDTO> paramCheckDTOS = queryTemplateProcessor.paramCheck(matchQuestionAnswerDTO.getMatchQuestionCode(), sessionId,
|
|
|
|
|
suspectInfo2IrSessionParam(sessionId, null));
|
|
|
|
|
// 匹配到意图,但是参数校验不通过,尝试提取消息中的信息
|
|
|
|
|
if (CollUtil.isNotEmpty(paramCheckDTOS) && !Boolean.TRUE.equals(robotTalkReq.isConfirmFlag())){
|
|
|
|
|
String paramsJoin = paramCheckDTOS.stream().map(ParamCheckDTO::getParamName).collect(Collectors.joining(","));
|
|
|
|
|
log.info("匹配到的问题:{} ,需要参数:{} ,尝试抽取问题:{} 中的参数。",matchQuestionAnswerDTO.getMatchQuestionCode(),paramsJoin,robotTalkReq.getMessage());
|
|
|
|
|
extractInformation(sessionId, robotTalkReq.getMessage(), robotTalkDTO);
|
|
|
|
|
robotTalkDTO.getAnswerInfo().setContentType(6);
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
if (!Boolean.TRUE.equals(robotTalkReq.isConfirmFlag())){
|
|
|
|
|
log.info("问题:{},未匹配到意图,且confirmFlag标识不为true,抽取问题中的关键属性",robotTalkReq.getMessage());
|
|
|
|
|
// 未匹配到意图,且不是关键信息确认操作则提取信息中的关键信息
|
|
|
|
|
extractInformation(sessionId, robotTalkReq.getMessage(), robotTalkDTO);
|
|
|
|
|
robotTalkDTO.getAnswerInfo().setContentType(6);
|
|
|
|
|
}else {
|
|
|
|
|
// 未匹配到意图,是关键信息确认操作,不做问题响应,只做默认回答
|
|
|
|
|
log.info("问题:{},未匹配到意图,且confirmFlag标识为true,设置默认回答:{}",robotTalkReq.getMessage(),config.getUnrecognizedTwo());
|
|
|
|
|
robotTalkDTO.getAnswerInfo().setMessage(config.getUnrecognizedTwo());
|
|
|
|
|
robotTalkDTO.setDoNext(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 匹配问题意图
|
|
|
|
|
MatchQuestionAnswerDTO matchQuestionAnswerDTO = robotTalkDTO.isDoNext() ? matchQuestionAnswer(robotTalkReq.getMessage()) : null;
|
|
|
|
|
|
|
|
|
|
// 获取机器人配置
|
|
|
|
|
IrRobotConfig config = irRobotConfigService.lambdaQuery().one();
|
|
|
|
|
if (Objects.isNull(matchQuestionAnswerDTO) && robotTalkDTO.isDoNext()){
|
|
|
|
|
// 未匹配到查询意图,设置默认错误语
|
|
|
|
|
log.info("问题:{}未匹配到意图",robotTalkReq.getMessage());
|
|
|
|
@ -225,7 +245,7 @@ public class RobotTalkServiceImpl implements RobotTalkService {
|
|
|
|
|
if (Objects.isNull(sessionParam) || StrUtil.isEmpty(sessionParam.getParamValue())) {
|
|
|
|
|
// 案件id为空,需要设置案件id
|
|
|
|
|
answerInfo.setContentType(2);
|
|
|
|
|
answerInfo.setMessage("请先设置案件id");
|
|
|
|
|
answerInfo.setMessage("请先设置案件信息");
|
|
|
|
|
robotTalkDTO.setDoNext(false);
|
|
|
|
|
} else {
|
|
|
|
|
Integer caseNo = StrUtil.isEmpty(sessionParam.getParamValue()) ? null : Integer.valueOf(sessionParam.getParamValue());
|
|
|
|
|