feat/multi-channel-framework #17

Merged
MerCry merged 4 commits from feat/multi-channel-framework into main 2026-03-13 09:56:02 +00:00
6 changed files with 26 additions and 10 deletions

View File

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

View File

@ -45,9 +45,11 @@ public class AiServiceClientImpl implements AiServiceClient {
ResponseEntity<ChatResponse> response = restTemplate.postForEntity(
url, entity, ChatResponse.class);
log.info("[AC-MCA-05] AI 服务响应: sessionId={}, shouldTransfer={}",
log.info("[AC-MCA-05] AI 服务响应: sessionId={}, shouldTransfer={},置信度:{}",
request.getSessionId(),
response.getBody() != null ? response.getBody().getShouldTransfer() : null);
response.getBody() != null ? response.getBody().getShouldTransfer() : null,
response.getBody().getConfidence()
);
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.OutboundMessage;
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.entity.Message;
import com.wecom.robot.entity.Session;
@ -17,6 +18,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -94,7 +96,20 @@ public class MessageRouterServiceImpl implements MessageRouterService {
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;
try {
chatResponse = aiServiceClient.generateReply(chatRequest).get();
@ -111,8 +126,7 @@ public class MessageRouterServiceImpl implements MessageRouterService {
int messageCount = sessionManagerService.getMessageCount(session.getSessionId());
boolean shouldTransfer = chatResponse.getShouldTransfer() != null && chatResponse.getShouldTransfer();
if (!shouldTransfer) {
if (shouldTransfer) {
shouldTransfer = transferService.shouldTransferToManual(
message.getContent(),
confidence,

View File

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

View File

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

View File

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