فهرست منبع

管理端whatsapp与zoomphone
客户管理与会话管理增添
将用户电话传给dify的inputs中的

Zhangbw 2 ماه پیش
والد
کامیت
6f53fa3a66

+ 3 - 2
ruoyi-modules/yp-talk/src/main/java/org/dromara/talk/controller/api/ChatController.java

@@ -223,11 +223,12 @@ public class ChatController {
         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);
+        log.info("收到流式消息请求: {}, 客服ID: {}, 对话ID: {}, 请求ID: {}, 客户电话: {}", userMessage, agentId, conversationId, requestId, customerPhone);
 
         SseEmitter emitter = new SseEmitter(60000L);
-        chatService.processMessageStream(userMessage, agentId, agentGender, ttsVcnList, conversationId, isGreeting, requestId, emitter);
+        chatService.processMessageStream(userMessage, agentId, agentGender, ttsVcnList, conversationId, isGreeting, requestId, customerPhone, emitter);
         return emitter;
     }
 

+ 2 - 1
ruoyi-modules/yp-talk/src/main/java/org/dromara/talk/service/IChatService.java

@@ -20,7 +20,8 @@ public interface IChatService {
      * @param conversationId 对话ID
      * @param isGreeting 是否为欢迎语
      * @param requestId 请求ID(用于判断是否为最新请求)
+     * @param customerPhone 客户电话号码
      * @param emitter SSE发射器
      */
-    void processMessageStream(String userMessage, Long agentId, String agentGender, List<Map<String, String>> ttsVcnList, String conversationId, Boolean isGreeting, Integer requestId, SseEmitter emitter);
+    void processMessageStream(String userMessage, Long agentId, String agentGender, List<Map<String, String>> ttsVcnList, String conversationId, Boolean isGreeting, Integer requestId, String customerPhone, SseEmitter emitter);
 }

+ 1 - 1
ruoyi-modules/yp-talk/src/main/java/org/dromara/talk/service/IDifyService.java

@@ -14,7 +14,7 @@ public interface IDifyService {
     * 流式调用Dify工作流(按句子分段)
     */
    void callWorkflowStream(String userMessage, String agentGender, List<Map<String, String>> ttsVcnList,
-                          TalkAgentVo agentConfig, Long userId, String conversationId,
+                          TalkAgentVo agentConfig, Long userId, String conversationId, String customerPhone,
                           Consumer<String> onTextChunk,
                           SentenceCallback onSentence);
 

+ 2 - 2
ruoyi-modules/yp-talk/src/main/java/org/dromara/talk/service/impl/ChatServiceImpl.java

@@ -80,7 +80,7 @@ public class ChatServiceImpl implements IChatService {
     @Override
     public void processMessageStream(String userMessage, Long agentId, String agentGender,
                                      List<Map<String, String>> ttsVcnList, String conversationId,
-                                     Boolean isGreeting, Integer requestId, SseEmitter emitter) {
+                                     Boolean isGreeting, Integer requestId, String customerPhone, SseEmitter emitter) {
         // 在主线程中获取用户ID,避免在异步线程中访问ThreadLocal
         Long userId = LoginHelper.getUserId();
         if (userId == null) {
@@ -154,7 +154,7 @@ public class ChatServiceImpl implements IChatService {
                     }
                 }
 
-                difyService.callWorkflowStream(userMessage, agentGender, ttsVcnList, agentConfig, finalUserId, difyConversationId,
+                difyService.callWorkflowStream(userMessage, agentGender, ttsVcnList, agentConfig, finalUserId, difyConversationId, customerPhone,
                     (textChunk) -> {
                         try {
                             // 累积AI回复文本

+ 4 - 1
ruoyi-modules/yp-talk/src/main/java/org/dromara/talk/service/impl/DifyServiceImpl.java

@@ -148,7 +148,7 @@ public class DifyServiceImpl implements IDifyService {
     public void callWorkflowStream(String userMessage, String agentGender,
                                    java.util.List<java.util.Map<String, String>> ttsVcnList,
                                    org.dromara.talk.domain.vo.TalkAgentVo agentConfig,
-                                   Long userId, String conversationId,
+                                   Long userId, String conversationId, String customerPhone,
                                    java.util.function.Consumer<String> onTextChunk,
                                    IDifyService.SentenceCallback onSentence) {
         try {
@@ -159,6 +159,9 @@ public class DifyServiceImpl implements IDifyService {
             inputs.put("agentGender", agentGender);
             inputs.put("ttsVcnList", ttsVcnList);
             inputs.put("currentVcn", agentConfig != null ? agentConfig.getTtsVcn() : null);
+            if (customerPhone != null && !customerPhone.isEmpty()) {
+                inputs.put("customerPhone", customerPhone);
+            }
 
             JSONObject requestBody = new JSONObject();
             requestBody.set("inputs", inputs);