You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
virtual-patient/virtual-patient-web/src/main/java/com/supervision/util/RasaUtil.java

50 lines
1.9 KiB
Java

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<String> 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 "对不起,我没有听懂您说的是什么意思";
}
}