diff --git a/pom.xml b/pom.xml
index acfcf51..aec6e8e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
com.alibaba
fastjson
- 1.2.83_noneautotype
+ 1.2.83
org.springframework.boot
diff --git a/src/main/java/com/supervision/contoller/ChatController.java b/src/main/java/com/supervision/contoller/ChatController.java
index 1dc6f7a..b0dce0d 100644
--- a/src/main/java/com/supervision/contoller/ChatController.java
+++ b/src/main/java/com/supervision/contoller/ChatController.java
@@ -1,18 +1,21 @@
package com.supervision.contoller;
+import com.supervision.service.IChatService;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
@Slf4j
@RestController
@RequestMapping("/chat")
+@RequiredArgsConstructor
public class ChatController {
+ private final IChatService chatService;
- @PostMapping("/queryStatisticsData")
- public String queryStatisticsData() {
- return "success";
+ @PostMapping("/talk")
+ public String talk(@RequestParam("file") MultipartFile multipartFile) {
+ return chatService.talk(multipartFile);
}
}
diff --git a/src/main/java/com/supervision/model/RobotTalkReq.java b/src/main/java/com/supervision/model/RobotTalkReq.java
new file mode 100644
index 0000000..445ea59
--- /dev/null
+++ b/src/main/java/com/supervision/model/RobotTalkReq.java
@@ -0,0 +1,45 @@
+package com.supervision.vo.talk;
+
+import cn.hutool.core.util.StrUtil;
+import lombok.Data;
+
+@Data
+public class RobotTalkReq {
+
+ private String sessionId;
+
+ /**
+ * 问题id
+ */
+ private String askId;
+
+ private String message;
+
+ /**
+ * 问题内容类型:1-文本,2-音频,3-文件,4-图片,5-视频
+ */
+ private Integer answerType;
+
+ /**
+ * 关键内容确认标识
+ */
+ private boolean confirmFlag;
+
+ // ========方便前端好传参=======>>>>>>
+ /**
+ * 名字
+ */
+ private String name;
+
+ /**
+ * 卡号
+ */
+ private String cardNumber;
+
+ /**
+ * 身份证件号
+ */
+ private String idNumber;
+
+ // <<<<<========方便前端好传参=======
+}
diff --git a/src/main/java/com/supervision/model/dify/DIFYChatReqInputVO.java b/src/main/java/com/supervision/model/dify/DIFYChatReqInputVO.java
index 071c5c2..f419044 100644
--- a/src/main/java/com/supervision/model/dify/DIFYChatReqInputVO.java
+++ b/src/main/java/com/supervision/model/dify/DIFYChatReqInputVO.java
@@ -4,14 +4,5 @@ import lombok.Data;
@Data
public class DIFYChatReqInputVO {
- private String type;
- private String intent_type;
- private String case_id;
- private String user_id;
- private String conversation_id;
- private String dataset_id;
- private String participator;
- private int dialogue_count;
- private String previous_query;
- private String previous_answer;
+ private String query;
}
diff --git a/src/main/java/com/supervision/model/dify/DifyChatReqVO.java b/src/main/java/com/supervision/model/dify/DifyChatReqVO.java
index 63a0038..c16760f 100644
--- a/src/main/java/com/supervision/model/dify/DifyChatReqVO.java
+++ b/src/main/java/com/supervision/model/dify/DifyChatReqVO.java
@@ -6,9 +6,7 @@ import static com.supervision.common.constant.DifyConstants.CHAT_RESPONSE_MODE_B
@Data
public class DifyChatReqVO {
- private String conversationId;
private String user;
- private String query;
private String response_mode = CHAT_RESPONSE_MODE_BLOCKING;
private DIFYChatReqInputVO inputs = new DIFYChatReqInputVO();
}
diff --git a/src/main/java/com/supervision/model/dify/DifyChatResVO.java b/src/main/java/com/supervision/model/dify/DifyChatResVO.java
index 83c1ac7..c00ac3e 100644
--- a/src/main/java/com/supervision/model/dify/DifyChatResVO.java
+++ b/src/main/java/com/supervision/model/dify/DifyChatResVO.java
@@ -2,15 +2,11 @@ package com.supervision.model.dify;
import lombok.Data;
+import java.util.Map;
+
@Data
public class DifyChatResVO {
- private String event;
private String task_id;
- private String id;
- private String message_id;
- private String conversation_id;
- private String mode;
- private String answer;
- private Metadata metadata;
- private String created_at;
+ private String workflow_run_id;
+ private Map data;
}
diff --git a/src/main/java/com/supervision/service/IChatService.java b/src/main/java/com/supervision/service/IChatService.java
index 9de2973..562737d 100644
--- a/src/main/java/com/supervision/service/IChatService.java
+++ b/src/main/java/com/supervision/service/IChatService.java
@@ -1,4 +1,8 @@
package com.supervision.service;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
public interface IChatService {
+ String talk(MultipartFile file);
}
diff --git a/src/main/java/com/supervision/service/impl/ChatServiceImpl.java b/src/main/java/com/supervision/service/impl/ChatServiceImpl.java
index 7d48466..40d95c2 100644
--- a/src/main/java/com/supervision/service/impl/ChatServiceImpl.java
+++ b/src/main/java/com/supervision/service/impl/ChatServiceImpl.java
@@ -1,6 +1,48 @@
package com.supervision.service.impl;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
+import com.supervision.dto.paddlespeech.res.TtsResultDTO;
+import com.supervision.model.dify.DIFYChatReqInputVO;
+import com.supervision.model.dify.DifyChatReqVO;
+import com.supervision.model.dify.DifyChatResVO;
import com.supervision.service.IChatService;
+import com.supervision.util.AsrUtil;
+import com.supervision.util.DifyApiUtil;
+import com.supervision.util.TtsUtil;
+import jakarta.annotation.Resource;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
+
+@Slf4j
+@Service
public class ChatServiceImpl implements IChatService {
+
+ @Resource
+ private DifyApiUtil difyApiUtil;
+
+ @Override
+ public String talk(MultipartFile file) {
+ String talkResult = "";
+ try {
+ DifyChatReqVO difyChatReqVO = new DifyChatReqVO();
+ difyChatReqVO.setUser("admin");
+ DIFYChatReqInputVO inputs = new DIFYChatReqInputVO();
+ inputs.setQuery(AsrUtil.asrTransformByBytes(file.getBytes()));
+ difyChatReqVO.setInputs(inputs);
+ String response = difyApiUtil.chat(difyChatReqVO);
+ log.info("response:{}", response);
+ TtsResultDTO ttsResultDTO = TtsUtil.ttsTransform(response);
+ talkResult = JSON.toJSONString(ttsResultDTO);
+ log.info("ttsResultDTO:{}", JSON.toJSONString(ttsResultDTO));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return talkResult;
+ }
}
diff --git a/src/main/java/com/supervision/util/DifyApiUtil.java b/src/main/java/com/supervision/util/DifyApiUtil.java
index 8352393..689d7d1 100644
--- a/src/main/java/com/supervision/util/DifyApiUtil.java
+++ b/src/main/java/com/supervision/util/DifyApiUtil.java
@@ -1,8 +1,8 @@
package com.supervision.util;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.supervision.model.dify.DifyChatReqVO;
-import com.supervision.model.dify.DifyChatResVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.hc.client5.http.ClientProtocolException;
import org.apache.hc.client5.http.classic.methods.HttpPost;
@@ -18,35 +18,32 @@ import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
-import static com.supervision.common.constant.DifyConstants.METHOD_CHAT_MESSAGES;
-
@Component
@Slf4j
public class DifyApiUtil {
@Value("${dify.url}")
private String difyUrl;
- @Value("${dify.dataset-auth}")
- private String difyDatasetAuth;
@Value("${dify.app-auth}")
private String difyAppAuth;
- public DifyChatResVO chat(DifyChatReqVO difyChatReqVO) {
- DifyChatResVO difyChatResVO = null;
+ public String chat(DifyChatReqVO difyChatReqVO) {
+ String result = null;
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
- HttpPost httpPost = new HttpPost(difyUrl + METHOD_CHAT_MESSAGES);
+ HttpPost httpPost = new HttpPost(difyUrl);
httpPost.setHeader(HttpHeaders.AUTHORIZATION, difyAppAuth);
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
log.info("发起对话:{}", difyChatReqVO);
StringEntity entity = new StringEntity(com.alibaba.fastjson.JSONObject.toJSON(difyChatReqVO).toString(), StandardCharsets.UTF_8);
httpPost.setEntity(entity);
- difyChatResVO = httpClient.execute(httpPost, response -> {
+ result = httpClient.execute(httpPost, response -> {
final int status = response.getCode();
if (status >= HttpStatus.SC_SUCCESS && status < HttpStatus.SC_REDIRECTION) {
final HttpEntity responseEntity = response.getEntity();
String responseStr = EntityUtils.toString(responseEntity);
- log.info("发起对话成功!");
- return JSON.parseObject(responseStr, DifyChatResVO.class);
+ log.info("DIFY返回:{}", responseStr);
+ JSONObject jsonObject = JSON.parseObject(responseStr);
+ return jsonObject.getJSONObject("data").getJSONObject("outputs").get("answerText").toString();
} else {
log.info("responseEntity {}", EntityUtils.toString(response.getEntity()));
throw new ClientProtocolException("Unexpected response status: " + status);
@@ -55,7 +52,7 @@ public class DifyApiUtil {
} catch (Exception e) {
log.error("发起对话失败", e);
}
- return difyChatResVO;
+ return result;
}
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index f35c133..ba6361b 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -6,9 +6,8 @@ server:
servlet:
context-path: /speech-demo-service
dify:
- url: http://192.168.10.137/v1
- dataset-auth: Bearer dataset-g3RctoaHdvXAAQjUVNMuUWCY
- app-auth: Bearer app-YrNuU7Puxr3ko8ftUdWtDKhz
+ url: http://192.168.10.137/v1/workflows/run
+ app-auth: Bearer app-cSxbjvdTZQhq2p2cKinChIhj
paddle-speech:
tts: http://192.168.10.138:8090/paddlespeech/tts
asr: http://192.168.10.138:8090/paddlespeech/asr