| | |
| | | //用来返回当前需要问的问题信息 |
| | | QuestionMessagePhone returnQues = new QuestionMessagePhone(); |
| | | |
| | | |
| | | for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOList) { |
| | | if (ivrLibaTemplateScriptVO.getSort() == ivrLibaTemplateVO1.getFirstQuestionNum().intValue()) |
| | | //获取第一题的问题 |
| | |
| | | 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"); |
| | |
| | | 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); |
| | |
| | | } |
| | | 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); |
| | |
| | | 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)); |
| | |
| | | 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("无匹配"); |
| | | //没有匹配到 |