Merge pull request 'feat/multi-channel-framework' (#17) from feat/multi-channel-framework into main

Reviewed-on: http://ashai.com.cn:3005/MerCry/ai-robot-channel/pulls/17
This commit is contained in:
MerCry 2026-03-13 09:56:01 +00:00
commit 7a0277a3b7
6 changed files with 26 additions and 10 deletions

View File

@ -28,7 +28,7 @@ public class TransferService {
return true; return true;
} }
if (confidence < transferConfig.getConfidenceThreshold()) { /*if (confidence < transferConfig.getConfidenceThreshold()) {
log.info("触发转人工: AI置信度过低 confidence={}", confidence); log.info("触发转人工: AI置信度过低 confidence={}", confidence);
return true; return true;
} }
@ -45,7 +45,7 @@ public class TransferService {
log.info("触发转人工: 会话时长超限 duration={}ms", duration); log.info("触发转人工: 会话时长超限 duration={}ms", duration);
return true; return true;
} }
} }*/
return false; return false;
} }

View File

@ -45,9 +45,11 @@ public class AiServiceClientImpl implements AiServiceClient {
ResponseEntity<ChatResponse> response = restTemplate.postForEntity( ResponseEntity<ChatResponse> response = restTemplate.postForEntity(
url, entity, ChatResponse.class); url, entity, ChatResponse.class);
log.info("[AC-MCA-05] AI 服务响应: sessionId={}, shouldTransfer={}", log.info("[AC-MCA-05] AI 服务响应: sessionId={}, shouldTransfer={},置信度:{}",
request.getSessionId(), request.getSessionId(),
response.getBody() != null ? response.getBody().getShouldTransfer() : null); response.getBody() != null ? response.getBody().getShouldTransfer() : null,
response.getBody().getConfidence()
);
return CompletableFuture.completedFuture(response.getBody()); return CompletableFuture.completedFuture(response.getBody());
} }

View File

@ -5,6 +5,7 @@ import com.wecom.robot.adapter.TransferCapable;
import com.wecom.robot.dto.InboundMessage; import com.wecom.robot.dto.InboundMessage;
import com.wecom.robot.dto.OutboundMessage; import com.wecom.robot.dto.OutboundMessage;
import com.wecom.robot.dto.ai.ChatRequest; import com.wecom.robot.dto.ai.ChatRequest;
import com.wecom.robot.dto.ai.ChatMessage;
import com.wecom.robot.dto.ai.ChatResponse; import com.wecom.robot.dto.ai.ChatResponse;
import com.wecom.robot.entity.Message; import com.wecom.robot.entity.Message;
import com.wecom.robot.entity.Session; import com.wecom.robot.entity.Session;
@ -17,6 +18,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -94,7 +96,20 @@ public class MessageRouterServiceImpl implements MessageRouterService {
List<Message> history = sessionManagerService.getSessionMessages(session.getSessionId()); List<Message> history = sessionManagerService.getSessionMessages(session.getSessionId());
ChatRequest chatRequest = ChatRequest.fromInboundMessage(message); List<ChatMessage> chatHistory = new ArrayList<>();
if (history != null && !history.isEmpty()) {
for (Message msg : history) {
String role = Message.SENDER_TYPE_CUSTOMER.equals(msg.getSenderType())
? ChatMessage.ROLE_USER
: ChatMessage.ROLE_ASSISTANT;
chatHistory.add(ChatMessage.builder()
.role(role)
.content(msg.getContent())
.build());
}
}
ChatRequest chatRequest = ChatRequest.fromInboundMessage(message, chatHistory);
ChatResponse chatResponse; ChatResponse chatResponse;
try { try {
chatResponse = aiServiceClient.generateReply(chatRequest).get(); chatResponse = aiServiceClient.generateReply(chatRequest).get();
@ -111,8 +126,7 @@ public class MessageRouterServiceImpl implements MessageRouterService {
int messageCount = sessionManagerService.getMessageCount(session.getSessionId()); int messageCount = sessionManagerService.getMessageCount(session.getSessionId());
boolean shouldTransfer = chatResponse.getShouldTransfer() != null && chatResponse.getShouldTransfer(); boolean shouldTransfer = chatResponse.getShouldTransfer() != null && chatResponse.getShouldTransfer();
if (shouldTransfer) {
if (!shouldTransfer) {
shouldTransfer = transferService.shouldTransferToManual( shouldTransfer = transferService.shouldTransferToManual(
message.getContent(), message.getContent(),
confidence, confidence,

View File

@ -1,5 +1,5 @@
server: server:
port: 8080 port: 8883
spring: spring:
datasource: datasource:

View File

@ -1,5 +1,5 @@
server: server:
port: 8080 port: 8883
spring: spring:
datasource: datasource:

View File

@ -24,7 +24,7 @@ wecom:
callback-url: /wecom/callback callback-url: /wecom/callback
transfer: transfer:
enabled: false enabled: true
keywords: keywords:
- 人工 - 人工
- 转人工 - 转人工