本文介绍企业智能问答机器人的转人工机制与工单系统对接方案。当机器人无法独立解决问题时需要平滑转接至人工客服并通过工单系统实现问题的全流程跟踪与处理。1. 智能转人工触发条件1.1 置信度触发当机器人回答的置信度低于预设阈值时自动触发转人工流程javapublic class HandoffDecisionService {// 置信度阈值配置private static final double LOW_CONFIDENCE_THRESHOLD 0.6;private static final double MEDIUM_CONFIDENCE_THRESHOLD 0.8;public HandoffType decideHandoff(double confidence, String query,HandoffContext context) {// 低置信度直接转人工if (confidence LOW_CONFIDENCE_THRESHOLD) {return HandoffType.IMMEDIATE_HANDS_OFF;}// 中置信度但包含敏感关键词if (confidence MEDIUM_CONFIDENCE_THRESHOLD) {if (containsSensitiveKeywords(query)) {return HandoffType.KEYWORD_TRIGGERED;}return HandoffType.PENDING_HANDS_OFF;}// 高置信度检查用户主动请求if (context.isUserRequestedHandoff()) {return HandoffType.USER_REQUESTED;}return HandoffType.BOT_HANDLE;}}1.2 关键词触发识别以下关键词立即转人工- **投诉类**投诉、举报、控告、严重不满- **敏感类**退款、取消合同、法律途径、媒体曝光- **复杂类**需要人工核实、多部门协调、特殊审批1.3 用户主动请求- 用户输入转人工、人工服务、找客服等明确表达- 用户对机器人答案连续3次表示不满意- 用户在单次会话中提问超过10轮2. 工单系统架构设计2.1 系统架构┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ 客服前端 │────▶│ API网关 │────▶│ 工单服务 ││ (Web/APP) │ │ (路由/限流) │ │ 核心 │└─────────────┘ └─────────────┘ └─────────────┘│▼┌──────────────────────────────────────────┐│ 数据存储层 ││ MySQL │ Redis │ ES │ MongoDB │ OSS │└──────────────────────────────────────────┘2.2 工单状态流转javapublic enum WorkOrderStatus {CREATED(已创建),ASSIGNED(已分配),PROCESSING(处理中),PENDING_CONFIRM(待确认),RESOLVED(已解决),CLOSED(已关闭),REOPENED(已重开);// 状态流转规则public boolean canTransitionTo(WorkOrderStatus newStatus) {return this.getAllowedTransitions().contains(newStatus);}}2.3 工单创建服务javaServicepublic class WorkOrderService {Autowiredprivate WorkOrderRepository workOrderRepository;Transactionalpublic WorkOrder createFromHandoff(HandoffContext handoffContext) {WorkOrder workOrder WorkOrder.builder().orderNo(generateOrderNo()).sourceType(SourceType.INTELLIGENT_BOT).sourceSessionId(handoffContext.getSessionId()).userId(handoffContext.getUserId()).userQuestion(handoffContext.getOriginalQuery()).botAnswer(handoffContext.getBotAnswer()).handoffReason(handoffContext.getHandoffReason()).status(WorkOrderStatus.CREATED).priority(handoffContext.getPriority()).slaDeadline(calculateSLA(handoffContext.getPriority())).build();// 记录转人工时的会话摘要workOrder.setSessionSummary(generateSessionSummary(handoffContext));return workOrderRepository.save(workOrder);}}3. 机器人与人工客服协作模式3.1 协作流程用户问题 → 意图识别 → 机器人处理(优先)│▼ (无法解决)转人工客服 → 协作调度中心 → 分配客服│▼知识库 ← 处理结果 → 更新工单 → 用户确认3.2 协作调度策略javaComponentpublic class CollaborationDispatcher {public DispatchResult dispatch(WorkOrder workOrder) {// 1. 检查当前客服工作量ListAgent availableAgents agentService.getAvailableAgents(workOrder.getRequiredSkill());// 2. 按负载均衡分配Agent selectedAgent availableAgents.stream().min(Comparator.comparing(Agent::getCurrentLoad)).orElseThrow(() - new NoAgentAvailableException());// 3. 发送分配通知dispatchNotification(selectedAgent, workOrder);// 4. 更新工单状态workOrder.assignTo(selectedAgent.getAgentId());return new DispatchResult(selectedAgent, workOrder);}}3.3 会话状态同步机器人转人工时需要将完整上下文同步给人工客服- 用户历史问题列表- 机器人的处理过程和答案- 用户满意度评价如有- 识别的用户意图和实体4. 会话记录与满意度评价4.1 会话记录存储javaEntityTable(name conversation_record)public class ConversationRecord {Idprivate String recordId;private String sessionId;private String userId;ElementCollectionprivate ListConversationMessage messages;private String botAnswer;private Double botConfidence;private Boolean isHandoff;private String handoffReason;private String agentId;private String agentAnswer;private Integer satisfactionScore; // 1-5分private LocalDateTime createdAt;private LocalDateTime endedAt;}4.2 满意度评价触发javapublic class SatisfactionService {// 评价时机// 1. 工单关闭时推送评价// 2. 会话结束后24小时未关闭时提示评价// 3. 用户主动评价public void requestSatisfaction(String sessionId, String userId) {if (shouldPromptSatisfaction(sessionId)) {notificationService.sendSatisfactionRequest(userId,getEvaluationLink(sessionId));}}public SatisfactionRecord submitSatisfaction(String sessionId,Integer score, String comment, ListString tags) {return satisfactionRepository.save(SatisfactionRecord.builder().sessionId(sessionId).score(score).comment(comment).tags(tags).submittedAt(LocalDateTime.now()).build());}}5. 实时监控与告警机制5.1 核心监控指标指标 | 说明 | 告警阈值转人工率 | 转人工会话/总会话数 | 20%平均响应时长 | 人工客服首次响应时间 | 30秒工单处理时长 | 从创建到关闭的平均时间 | 4小时满意度评分 | 用户评价均值 | 3.5分知识库命中率 | 机器人直接回答率 | 70%5.2 告警实现javaServicepublic class MonitoringAlertService {Autowiredprivate MetricsCollector metricsCollector;Autowiredprivate AlertNotificationService notificationService;Scheduled(fixedRate 60000) // 每分钟检查public void checkAlerts() {MetricsSnapshot snapshot metricsCollector.getSnapshot();// 检查各项告警规则checkRule(转人工率, snapshot.getHandoffRate(),alert - alert.getThreshold() 0.2,AlertLevel.P1);checkRule(响应时长, snapshot.getAvgResponseTime(),alert - alert.getThreshold() 30000,AlertLevel.P2);checkRule(满意度, snapshot.getSatisfactionScore(),alert - alert.getThreshold() 3.5,AlertLevel.P3);}private void checkRule(String metricName, Double value,PredicateAlertRule condition, AlertLevel level) {AlertRule rule alertRuleRepository.findByMetric(metricName);if (condition.test(rule)) {Alert alert Alert.builder().metric(metricName).value(value).threshold(rule.getThreshold()).level(level).occurredAt(LocalDateTime.now()).build();alertRepository.save(alert);notificationService.notify(alert);}}}5.3 告警收敛机制- **P1告警**立即电话通知 短信 邮件 钉钉群- **P2告警**短信 邮件 钉钉群- **P3告警**邮件 定期汇总报告6. 总结本文详细介绍了智能问答机器人的转人工机制和工单系统对接方案1. **多维度触发条件**置信度、关键词、用户主动三种方式确保精准转人工2. **完整工单流转**从创建、分配、处理到关闭的全程跟踪3. **人机协作模式**机器人优先处理人工无缝接入4. **满意度闭环**会话记录与评价体系完善服务改进依据5. **实时监控**多维度指标监控配合分级告警机制通过上述方案企业可实现智能客服与人工客服的高效协作为用户提供优质的服务体验。
Java 程序员第 41 阶段07:企业智能问答机器人落地,搭建内部智能客服系统,转人工与工单系统对接
本文介绍企业智能问答机器人的转人工机制与工单系统对接方案。当机器人无法独立解决问题时需要平滑转接至人工客服并通过工单系统实现问题的全流程跟踪与处理。1. 智能转人工触发条件1.1 置信度触发当机器人回答的置信度低于预设阈值时自动触发转人工流程javapublic class HandoffDecisionService {// 置信度阈值配置private static final double LOW_CONFIDENCE_THRESHOLD 0.6;private static final double MEDIUM_CONFIDENCE_THRESHOLD 0.8;public HandoffType decideHandoff(double confidence, String query,HandoffContext context) {// 低置信度直接转人工if (confidence LOW_CONFIDENCE_THRESHOLD) {return HandoffType.IMMEDIATE_HANDS_OFF;}// 中置信度但包含敏感关键词if (confidence MEDIUM_CONFIDENCE_THRESHOLD) {if (containsSensitiveKeywords(query)) {return HandoffType.KEYWORD_TRIGGERED;}return HandoffType.PENDING_HANDS_OFF;}// 高置信度检查用户主动请求if (context.isUserRequestedHandoff()) {return HandoffType.USER_REQUESTED;}return HandoffType.BOT_HANDLE;}}1.2 关键词触发识别以下关键词立即转人工- **投诉类**投诉、举报、控告、严重不满- **敏感类**退款、取消合同、法律途径、媒体曝光- **复杂类**需要人工核实、多部门协调、特殊审批1.3 用户主动请求- 用户输入转人工、人工服务、找客服等明确表达- 用户对机器人答案连续3次表示不满意- 用户在单次会话中提问超过10轮2. 工单系统架构设计2.1 系统架构┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ 客服前端 │────▶│ API网关 │────▶│ 工单服务 ││ (Web/APP) │ │ (路由/限流) │ │ 核心 │└─────────────┘ └─────────────┘ └─────────────┘│▼┌──────────────────────────────────────────┐│ 数据存储层 ││ MySQL │ Redis │ ES │ MongoDB │ OSS │└──────────────────────────────────────────┘2.2 工单状态流转javapublic enum WorkOrderStatus {CREATED(已创建),ASSIGNED(已分配),PROCESSING(处理中),PENDING_CONFIRM(待确认),RESOLVED(已解决),CLOSED(已关闭),REOPENED(已重开);// 状态流转规则public boolean canTransitionTo(WorkOrderStatus newStatus) {return this.getAllowedTransitions().contains(newStatus);}}2.3 工单创建服务javaServicepublic class WorkOrderService {Autowiredprivate WorkOrderRepository workOrderRepository;Transactionalpublic WorkOrder createFromHandoff(HandoffContext handoffContext) {WorkOrder workOrder WorkOrder.builder().orderNo(generateOrderNo()).sourceType(SourceType.INTELLIGENT_BOT).sourceSessionId(handoffContext.getSessionId()).userId(handoffContext.getUserId()).userQuestion(handoffContext.getOriginalQuery()).botAnswer(handoffContext.getBotAnswer()).handoffReason(handoffContext.getHandoffReason()).status(WorkOrderStatus.CREATED).priority(handoffContext.getPriority()).slaDeadline(calculateSLA(handoffContext.getPriority())).build();// 记录转人工时的会话摘要workOrder.setSessionSummary(generateSessionSummary(handoffContext));return workOrderRepository.save(workOrder);}}3. 机器人与人工客服协作模式3.1 协作流程用户问题 → 意图识别 → 机器人处理(优先)│▼ (无法解决)转人工客服 → 协作调度中心 → 分配客服│▼知识库 ← 处理结果 → 更新工单 → 用户确认3.2 协作调度策略javaComponentpublic class CollaborationDispatcher {public DispatchResult dispatch(WorkOrder workOrder) {// 1. 检查当前客服工作量ListAgent availableAgents agentService.getAvailableAgents(workOrder.getRequiredSkill());// 2. 按负载均衡分配Agent selectedAgent availableAgents.stream().min(Comparator.comparing(Agent::getCurrentLoad)).orElseThrow(() - new NoAgentAvailableException());// 3. 发送分配通知dispatchNotification(selectedAgent, workOrder);// 4. 更新工单状态workOrder.assignTo(selectedAgent.getAgentId());return new DispatchResult(selectedAgent, workOrder);}}3.3 会话状态同步机器人转人工时需要将完整上下文同步给人工客服- 用户历史问题列表- 机器人的处理过程和答案- 用户满意度评价如有- 识别的用户意图和实体4. 会话记录与满意度评价4.1 会话记录存储javaEntityTable(name conversation_record)public class ConversationRecord {Idprivate String recordId;private String sessionId;private String userId;ElementCollectionprivate ListConversationMessage messages;private String botAnswer;private Double botConfidence;private Boolean isHandoff;private String handoffReason;private String agentId;private String agentAnswer;private Integer satisfactionScore; // 1-5分private LocalDateTime createdAt;private LocalDateTime endedAt;}4.2 满意度评价触发javapublic class SatisfactionService {// 评价时机// 1. 工单关闭时推送评价// 2. 会话结束后24小时未关闭时提示评价// 3. 用户主动评价public void requestSatisfaction(String sessionId, String userId) {if (shouldPromptSatisfaction(sessionId)) {notificationService.sendSatisfactionRequest(userId,getEvaluationLink(sessionId));}}public SatisfactionRecord submitSatisfaction(String sessionId,Integer score, String comment, ListString tags) {return satisfactionRepository.save(SatisfactionRecord.builder().sessionId(sessionId).score(score).comment(comment).tags(tags).submittedAt(LocalDateTime.now()).build());}}5. 实时监控与告警机制5.1 核心监控指标指标 | 说明 | 告警阈值转人工率 | 转人工会话/总会话数 | 20%平均响应时长 | 人工客服首次响应时间 | 30秒工单处理时长 | 从创建到关闭的平均时间 | 4小时满意度评分 | 用户评价均值 | 3.5分知识库命中率 | 机器人直接回答率 | 70%5.2 告警实现javaServicepublic class MonitoringAlertService {Autowiredprivate MetricsCollector metricsCollector;Autowiredprivate AlertNotificationService notificationService;Scheduled(fixedRate 60000) // 每分钟检查public void checkAlerts() {MetricsSnapshot snapshot metricsCollector.getSnapshot();// 检查各项告警规则checkRule(转人工率, snapshot.getHandoffRate(),alert - alert.getThreshold() 0.2,AlertLevel.P1);checkRule(响应时长, snapshot.getAvgResponseTime(),alert - alert.getThreshold() 30000,AlertLevel.P2);checkRule(满意度, snapshot.getSatisfactionScore(),alert - alert.getThreshold() 3.5,AlertLevel.P3);}private void checkRule(String metricName, Double value,PredicateAlertRule condition, AlertLevel level) {AlertRule rule alertRuleRepository.findByMetric(metricName);if (condition.test(rule)) {Alert alert Alert.builder().metric(metricName).value(value).threshold(rule.getThreshold()).level(level).occurredAt(LocalDateTime.now()).build();alertRepository.save(alert);notificationService.notify(alert);}}}5.3 告警收敛机制- **P1告警**立即电话通知 短信 邮件 钉钉群- **P2告警**短信 邮件 钉钉群- **P3告警**邮件 定期汇总报告6. 总结本文详细介绍了智能问答机器人的转人工机制和工单系统对接方案1. **多维度触发条件**置信度、关键词、用户主动三种方式确保精准转人工2. **完整工单流转**从创建、分配、处理到关闭的全程跟踪3. **人机协作模式**机器人优先处理人工无缝接入4. **满意度闭环**会话记录与评价体系完善服务改进依据5. **实时监控**多维度指标监控配合分级告警机制通过上述方案企业可实现智能客服与人工客服的高效协作为用户提供优质的服务体验。