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