From 393ba5a4d088d84e311e3d2c21b625cad012475f Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Wed, 3 Apr 2024 09:27:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=BA=94=E7=AD=94=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/dto/robot/SuspectInfo.java | 5 ++ .../service/impl/RobotTalkServiceImpl.java | 60 ++++++++++++------- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/supervision/dto/robot/SuspectInfo.java b/src/main/java/com/supervision/dto/robot/SuspectInfo.java index bce1c40..0c9d585 100644 --- a/src/main/java/com/supervision/dto/robot/SuspectInfo.java +++ b/src/main/java/com/supervision/dto/robot/SuspectInfo.java @@ -21,4 +21,9 @@ public class SuspectInfo { * 身份证件号 */ private String idNumber; + + + public boolean isEmpty() { + return name == null && cardNumber == null && idNumber == null; + } } diff --git a/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java b/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java index 1b7de3a..603d6c3 100644 --- a/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java +++ b/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java @@ -91,29 +91,7 @@ public class RobotTalkServiceImpl implements RobotTalkService { // 匹配问题意图 MatchQuestionAnswerDTO matchQuestionAnswerDTO = matchQuestionAnswer(robotTalkReq.getMessage()); - if (Objects.nonNull(matchQuestionAnswerDTO)){ - List paramCheckDTOS = queryTemplateProcessor.paramCheck(matchQuestionAnswerDTO.getMatchQuestionCode(), sessionId, - suspectInfo2IrSessionParam(sessionId, robotTalkReq.getTitleContent())); - // 匹配到意图,但是参数校验不通过,尝试提取消息中的信息 - 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); - } - } + question2Answer(robotTalkReq, robotTalkDTO, matchQuestionAnswerDTO,config); if (Objects.isNull(matchQuestionAnswerDTO) && robotTalkDTO.isDoNext()){ // 未匹配到查询意图,设置默认错误语 @@ -147,6 +125,42 @@ public class RobotTalkServiceImpl implements RobotTalkService { return robotTalkDTO; } + private void question2Answer(RobotTalkReq robotTalkReq,RobotTalkDTO robotTalkDTO, MatchQuestionAnswerDTO matchQuestionAnswerDTO,IrRobotConfig config) { + + String sessionId = robotTalkReq.getSessionId(); + + if (Objects.nonNull(matchQuestionAnswerDTO)){ + List 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); + SuspectInfo suspectInfo = robotTalkDTO.getAnswerInfo().getSuspectInfo(); + if (Objects.isNull(suspectInfo) || suspectInfo.isEmpty()){ + // 未抽取到信息,继续下一步操作 + robotTalkDTO.getAnswerInfo().setContentType(6); + robotTalkDTO.setDoNext(true); + }else { + 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); + } + } + } + private void logSessionInfo(RobotTalkDTO robotTalkDTO, MatchQuestionAnswerDTO matchQuestionAnswerDTO) { // 组装日志信息 IrSessionHistory irSessionHistory = talk2SessionHistory(robotTalkDTO.getSessionId(),