|
@@ -8,6 +8,7 @@ import org.dromara.common.core.service.DictService;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.talk.domain.bo.TalkAgentBo;
|
|
import org.dromara.talk.domain.bo.TalkAgentBo;
|
|
|
import org.dromara.talk.domain.bo.TalkSessionBo;
|
|
import org.dromara.talk.domain.bo.TalkSessionBo;
|
|
|
|
|
+import org.dromara.talk.domain.dto.MessageStreamRequest;
|
|
|
import org.dromara.talk.domain.vo.TalkAgentVo;
|
|
import org.dromara.talk.domain.vo.TalkAgentVo;
|
|
|
import org.dromara.talk.service.IChatService;
|
|
import org.dromara.talk.service.IChatService;
|
|
|
import org.dromara.talk.service.ITalkAgentService;
|
|
import org.dromara.talk.service.ITalkAgentService;
|
|
@@ -205,30 +206,27 @@ public class ChatController {
|
|
|
* 流式处理用户消息
|
|
* 流式处理用户消息
|
|
|
* 使用SSE实时推送文本和音频数据
|
|
* 使用SSE实时推送文本和音频数据
|
|
|
*
|
|
*
|
|
|
- * @param request 请求参数,包含:
|
|
|
|
|
- * - message: 用户消息内容
|
|
|
|
|
- * - agentId: 客服ID
|
|
|
|
|
- * - agentGender: 客服性别(不需要用户传递前端做处理)
|
|
|
|
|
- * - ttsVcnList: TTS发音人列表 (不需要用户传递前端做处理)
|
|
|
|
|
- * - conversationId: 会话ID
|
|
|
|
|
- * - isGreeting: 是否为欢迎语
|
|
|
|
|
- * - requestId: 请求ID
|
|
|
|
|
|
|
+ * @param request 请求参数
|
|
|
*/
|
|
*/
|
|
|
@PostMapping("/message/stream")
|
|
@PostMapping("/message/stream")
|
|
|
- public SseEmitter handleMessageStream(@RequestBody Map<String, Object> request) {
|
|
|
|
|
- String userMessage = (String) request.get("message");
|
|
|
|
|
- Long agentId = request.get("agentId") != null ? Long.valueOf(request.get("agentId").toString()) : null;
|
|
|
|
|
- String agentGender = (String) request.get("agentGender");
|
|
|
|
|
- List<Map<String, String>> ttsVcnList = (List<Map<String, String>>) request.get("ttsVcnList");
|
|
|
|
|
- String conversationId = (String) request.get("conversationId");
|
|
|
|
|
- Boolean isGreeting = request.get("isGreeting") != null ? Boolean.valueOf(request.get("isGreeting").toString()) : false;
|
|
|
|
|
- Integer requestId = request.get("requestId") != null ? Integer.valueOf(request.get("requestId").toString()) : null;
|
|
|
|
|
- String customerPhone = (String) request.get("customerPhone");
|
|
|
|
|
-
|
|
|
|
|
- log.info("收到流式消息请求: {}, 客服ID: {}, 对话ID: {}, 请求ID: {}, 客户电话: {}", userMessage, agentId, conversationId, requestId, customerPhone);
|
|
|
|
|
|
|
+ public SseEmitter handleMessageStream(@RequestBody MessageStreamRequest request) {
|
|
|
|
|
+ log.info("收到流式消息请求: {}, 客服ID: {}, 对话ID: {}, 请求ID: {}, 客户电话: {}, 类型: {}",
|
|
|
|
|
+ request.getMessage(), request.getAgentId(), request.getConversationId(),
|
|
|
|
|
+ request.getRequestId(), request.getCustomerPhone(), request.getType());
|
|
|
|
|
|
|
|
SseEmitter emitter = new SseEmitter(60000L);
|
|
SseEmitter emitter = new SseEmitter(60000L);
|
|
|
- chatService.processMessageStream(userMessage, agentId, agentGender, ttsVcnList, conversationId, isGreeting, requestId, customerPhone, emitter);
|
|
|
|
|
|
|
+ chatService.processMessageStream(
|
|
|
|
|
+ request.getMessage(),
|
|
|
|
|
+ request.getAgentId(),
|
|
|
|
|
+ request.getAgentGender(),
|
|
|
|
|
+ request.getTtsVcnList(),
|
|
|
|
|
+ request.getConversationId(),
|
|
|
|
|
+ request.getIsGreeting(),
|
|
|
|
|
+ request.getRequestId(),
|
|
|
|
|
+ request.getCustomerPhone(),
|
|
|
|
|
+ request.getType(),
|
|
|
|
|
+ emitter
|
|
|
|
|
+ );
|
|
|
return emitter;
|
|
return emitter;
|
|
|
}
|
|
}
|
|
|
|
|
|