liusheng
2024-12-11 10aaa035f5be0312304d20f022bdb714a8f4900a
ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
@@ -139,7 +139,6 @@
                //用来返回当前需要问的问题信息
                QuestionMessagePhone returnQues = new QuestionMessagePhone();
                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOList) {
                    if (ivrLibaTemplateScriptVO.getSort() == ivrLibaTemplateVO1.getFirstQuestionNum().intValue())
                        //获取第一题的问题
@@ -180,23 +179,25 @@
                        backQuset.add(ivrLibaTemplateScriptVO);
                        redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
                        //如果几次都没响应,就下一题(需要先判断是否有下一题)
                        if (ivrLibaTemplateScriptVO.getSort() == 0) {
                            //如果下一题没有了,就结束了
                            QuestionMessagePhone returnQues = new QuestionMessagePhone();
//                            returnQues.setCode(null);
                            List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                            returnQues.setContent(JSON.toJSONString(backQusetRedis));
                            returnQues.setJsy(ivrLibaTemplateVO1.getRevisitAfter());
                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                            redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
//                        //如果几次都没响应,就下一题(需要先判断是否有下一题)
//                        if (ivrLibaTemplateScriptVO.getSort() == 0) {
                        //如果下一题没有了,就结束了
                        } else {
                            //如果有下一题,就根据当前teagetID+1 获取下一题
                            QuestionMessagePhone returnQues = getNextQuestion(ivrLibaTemplateScriptVOList, ivrLibaTemplateScriptVO);
                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                            redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
                        }
                        //没有响应,就结束了
                        QuestionMessagePhone returnQues = new QuestionMessagePhone();
//                            returnQues.setCode(null);
                        List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                        returnQues.setContent(JSON.toJSONString(backQusetRedis));
                        returnQues.setJsy(ivrLibaTemplateVO1.getRevisitAfter());
                        redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                        redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
//                        } else {
//                            //如果有下一题,就根据当前teagetID+1 获取下一题
//                            QuestionMessagePhone returnQues = getNextQuestion(ivrLibaTemplateScriptVOList, ivrLibaTemplateScriptVO);
//                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
//                            redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
//                        }
                    } else {
                        //实际静默次数是否 不等于 模板中配置的次数
//                        QuestionMessage returnQues = redisCache.getCacheObject(userId + "returnQues");
@@ -206,10 +207,10 @@
                        Integer noVoice2 = redisCache.getCacheObject(userId + "noVoice");
                        noVoice2 = noVoice2 + 1;
                        //给问题加上无匹配话术
                        //给问题加上静默话术
                        QuestionMessagePhone returnQues = redisCache.getCacheObject(userId + "returnQues");
                        IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
                        boolean contains = nowQuestion.getScriptContent().contains(nowQuestion.getNoMatchText());
                        boolean contains = nowQuestion.getScriptContent().contains(nowQuestion.getSlienceText());
                        if (!contains) {
                            String scriptContent = nowQuestion.getSlienceText() + "," + nowQuestion.getScriptContent();
                            nowQuestion.setScriptContent(scriptContent);
@@ -321,7 +322,11 @@
                            }
                            log.info("==============================Targetregex的值为:{},   Targetregex2的值为:{}", ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
                            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
                            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() &&
                                    StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() ||
                                    StringUtils.isEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) &&
                                            StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) &&
                                            matcher.matches()) {
                                log.error("匹配正确了");
                                //说明匹配正确了
                                ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(1);
@@ -331,10 +336,9 @@
                                redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
                                //将静默置为0
                                redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
                                //获取下一题
                                Integer nextQuestion = ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
                                if (nextQuestion > ivrLibaTemplateScriptVOList.size()) {
                                    //如果下一题没有了,就结束了
                                //判断一下,这个选项结果是不是还有继续问下去的必要,例如选项结果是别人不想继续回答问题,就要结束掉
                                if (ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getIsEnd() == 1) {
                                    QuestionMessagePhone returnQues = new QuestionMessagePhone();
                                    List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                                    returnQues.setContent(JSON.toJSONString(backQusetRedis));
@@ -342,16 +346,28 @@
                                    redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                                    redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
                                } else {
                                    for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOList) {
                                        if (script.getSort() == nextQuestion) {
                                            QuestionMessagePhone returnQues = new QuestionMessagePhone();
                                            returnQues.setNowQuestion(script);
                                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                                            break;
                                    //获取下一题
                                    Integer nextQuestion = ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
                                    if (nextQuestion > ivrLibaTemplateScriptVOList.size()) {
                                        //如果下一题没有了,就结束了
                                        QuestionMessagePhone returnQues = new QuestionMessagePhone();
                                        List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                                        returnQues.setContent(JSON.toJSONString(backQusetRedis));
                                        returnQues.setJsy(ivrLibaTemplateVO1.getRevisitAfter());
                                        redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                                        redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
                                    } else {
                                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOList) {
                                            if (script.getSort() == nextQuestion) {
                                                QuestionMessagePhone returnQues = new QuestionMessagePhone();
                                                returnQues.setNowQuestion(script);
                                                redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                                                break;
                                            }
                                        }
                                    }
                                    break;
                                }
                                break;
                            } else {
                                log.error("无匹配");
                                //没有匹配到