diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java index a54cd4b3..add166d1 100644 --- a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java @@ -7,5 +7,11 @@ import com.xueyi.nlt.nlt.domain.dto.DmIntentDto; import com.xueyi.nlt.nlt.domain.query.DmIntentQuery; public interface IDmIntentService extends IBaseService { + DmIntentResponse regularAnswer(DmIntentVo intent); + + DmIntentResponse knowledgeAnswer(DmIntentVo intent); + DmIntentResponse conversation(DmIntentVo intent); + + DmIntentResponse sessionHandle(DmIntentVo intent); } diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java index 47d4d3ff..6870f466 100644 --- a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java @@ -7,8 +7,10 @@ import com.xueyi.common.core.constant.basic.SecurityConstants; import com.xueyi.common.core.constant.digitalman.MessageConstants; import com.xueyi.common.core.constant.digitalman.SkillConstants; import com.xueyi.common.core.utils.core.IdUtil; +import com.xueyi.common.core.web.result.AjaxResult; import com.xueyi.common.core.web.result.R; import com.xueyi.common.web.entity.service.impl.BaseServiceImpl; +import com.xueyi.nlt.api.nlt.domain.vo.CoversationSessionVo; import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo; import com.xueyi.nlt.api.nlt.domain.vo.KnowledgeVo; import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse; @@ -82,6 +84,30 @@ public class DmIntentServiceImpl extends BaseServiceImpl manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId()); - String enterpriseId = manDeviceDtoR.getData().getTId().toString(); + Long enterpriseId = manDeviceDtoR.getData().getTId(); String enterpriseName = ""; - R enterpriseDtoR = remoteEnterpriseService.getInfo(Long.valueOf(enterpriseId)); + R enterpriseDtoR = remoteEnterpriseService.getInfo(enterpriseId); Source source = SourceUtil.getSourceCache(enterpriseDtoR.getData().getStrategyId()); if (enterpriseDtoR.isOk()) { enterpriseName = enterpriseDtoR.getData().getName(); @@ -104,7 +130,7 @@ public class DmIntentServiceImpl extends BaseServiceImpl> skilllistInner = remoteskillService.skilllistInner(intent.getDevId(),"1",Long.parseLong(enterpriseId), source.getMaster(), SecurityConstants.INNER); + R> skilllistInner = remoteskillService.skilllistInner(intent.getDevId(),"1",enterpriseId, source.getMaster(), SecurityConstants.INNER); if(skilllistInner.isOk()){ List skilllist=skilllistInner.getData(); for (DmSkillDto dmSkillDto : skilllist) { @@ -122,21 +148,20 @@ public class DmIntentServiceImpl extends BaseServiceImpl dmKnowledgeResponseR = remoteQAService.query(knowledgeVo); - if (dmKnowledgeResponseR!= null && dmKnowledgeResponseR.getData() != null) { - qaAjax = dmKnowledgeResponseR.getData(); - } + return response; + } + @Override + public DmIntentResponse knowledgeAnswer(DmIntentVo intent){ + MarkRecordVo recordVo = new MarkRecordVo(); + recordVo.setDevId(intent.getDevId()); + recordVo.setId(IdUtil.getSnowflakeNextId()); + recordVo.setCreateTime(LocalDateTime.now()); + recordVo.setQuestion(intent.getContent()); + recordVo.setHit(1); - String content = ""; - if (qaAjax != null) { - log.info("知识库问答返回结果:{}",qaAjax.toString()); - if (qaAjax.getTarget() == 1) { - content = qaAjax.getResult().get(0).getKnowledgeLib(); - pushIntoDashboardRedis(enterpriseName,content,"knowledge"); - response.setH5(JSONObject.from(qaAjax)); - // 记录log - recordVo.setType(2); - List answers = new ArrayList(); - answers.add(response.getMsg()); - recordVo.setAnswers(answers); // 航班查询 - return response; - } - else { - // 知识库没有答案,返回空 - response.clear(); - response.setMsg(""); - } - } + R manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId()); + Long enterpriseId = manDeviceDtoR.getData().getTId(); + String enterpriseName = ""; + R enterpriseDtoR = remoteEnterpriseService.getInfo(Long.valueOf(enterpriseId)); + Source source = SourceUtil.getSourceCache(enterpriseDtoR.getData().getStrategyId()); + if (enterpriseDtoR.isOk()) { + enterpriseName = enterpriseDtoR.getData().getName(); } - if(StringUtils.isEmpty(response.getSkillCode()) && intent.getMode().equals(MessageConstants.MODE_FREE_CHAT)) { - JSONObject joResult = freeChatTemplate.handle(intent.getDevId(),intent.getContent()); - response.setH5(joResult); + // 调用知识库问答 + DmIntentResponse response = new DmIntentResponse(); + response.setSkillCode("30"); + DmKnowledgeResponse qaAjax = null; + KnowledgeVo knowledgeVo = new KnowledgeVo(); + knowledgeVo.setManCode(manDeviceDtoR.getData().getManCode()); + knowledgeVo.setTenantId(manDeviceDtoR.getData().getTId()); + knowledgeVo.setQuestion(intent.getContent()); + R dmKnowledgeResponseR = remoteQAService.query(knowledgeVo); + if (dmKnowledgeResponseR!= null && dmKnowledgeResponseR.getData() != null) { + qaAjax = dmKnowledgeResponseR.getData(); + } + + String content = ""; + if (qaAjax != null) { + log.info("知识库问答返回结果:{}",qaAjax.toString()); + if (qaAjax.getTarget() == 1) { + content = qaAjax.getResult().get(0).getKnowledgeLib(); + pushIntoDashboardRedis(enterpriseName,content,"knowledge"); + response.setH5(JSONObject.from(qaAjax)); + // 记录log + recordVo.setType(2); + List answers = new ArrayList(); + answers.add(response.getMsg()); + recordVo.setAnswers(answers); // 航班查询 + return response; + } + else { + // 知识库没有答案,返回空 + response.clear(); + response.setMsg(""); + } } + return response; + } + + @Override + public DmIntentResponse sessionHandle(DmIntentVo intent) { + R manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId()); + Long enterpriseId = manDeviceDtoR.getData().getTId(); + DmIntentResponse response = new DmIntentResponse(); + // 判断会议室缓存 + // 获取设备号对应缓存 + //之前已有session信息 + CoversationSessionVo sessionObject = (CoversationSessionVo) redisTemplate2.opsForValue().get("group:device" + ":" + intent.getDevId() + ":" +"session"); //category + if (sessionObject != null) { + switch (sessionObject.getCategory()) { + case "meeting": + response.setMsg(""); + response.setSkillCode("1"); + response.setH5(meetingOrderTemplate.handle(intent.getDevId(),intent.getContent(), enterpriseId)); + response.setAction("Meeting"); + break; + case "delivery": + response.setMsg(""); + response.setSkillCode("33"); + response.setH5(deliveryOrderTemplate.handle(intent.getDevId(),intent.getContent(), enterpriseId)); + break; + case "flight": + response.setMsg(""); + response.setSkillCode("34"); + response.setH5(flightMessageTemplate.handle(intent.getDevId(),intent.getContent(), enterpriseId)); + break; + + } + } return response; }