package com.supervision.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.supervision.pojo.paddlespeech.res.AsrResultDTO; import com.supervision.pojo.paddlespeech.res.PaddleSpeechResDTO; import com.supervision.pojo.rasa.train.dto.RasaReqDTO; import com.supervision.pojo.rasa.train.dto.RasaResDTO; import com.supervision.vo.rasa.RasaTalkVo; import lombok.extern.slf4j.Slf4j; import org.springframework.core.env.Environment; import java.util.List; import java.util.stream.Collectors; @Slf4j public class RasaUtil { private static final Environment environment = SpringBeanUtil.getBean(Environment.class); private static final String RASA_TALK_URL = environment.getProperty("rasa.base-url") + environment.getProperty("rasa.talk"); public static String talkRasa(String question, String sessionId) { RasaTalkVo rasaTalkVo = new RasaTalkVo(); rasaTalkVo.setQuestion(question); rasaTalkVo.setSessionId(sessionId); // 默认为1 rasaTalkVo.setModelId("1"); String post = HttpUtil.post(RASA_TALK_URL, JSONUtil.toJsonStr(rasaTalkVo)); log.info("调用rasa对话返回结果:{}", post); try { JSONObject entries = JSONUtil.parseObj(post); List list = JSONUtil.toList(entries.getStr("data"), String.class); if (CollUtil.isEmpty(list)) { return "对不起,我没有听懂您说的是什么意思"; } return CollUtil.getFirst(list); } catch (Exception e) { log.error("talkRasa error ", e); } return "对不起,我没有听懂您说的是什么意思"; } }