Package com.bytedesk.service.unified
Class UnifiedThreadRoutingStrategy
java.lang.Object
com.bytedesk.service.routing_strategy.AbstractThreadRoutingStrategy
com.bytedesk.service.unified.UnifiedThreadRoutingStrategy
@Component("unifiedThreadStrategy")
public class UnifiedThreadRoutingStrategy
extends AbstractThreadRoutingStrategy
统一客服入口策略器
功能特点: - 统一客服入口,支持多工作组轮询 - 不支持直接转人工,需要通过工作组机制 - 自动分配到最合适的工作组
- Since:
- 1.0.0
- Author:
- Jack Ning 270580156@qq.com
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ThreadRestServiceprivate final UnifiedRestServiceFields inherited from class com.bytedesk.service.routing_strategy.AbstractThreadRoutingStrategy
DEFAULT_OFFLINE_MESSAGE, DEFAULT_WELCOME_MESSAGE, ESTIMATED_WAIT_TIME_PER_PERSON, MESSAGE_CACHE_MINUTES, QUEUE_NEXT_MESSAGE, QUEUE_WAITING_MESSAGE_TEMPLATE -
Constructor Summary
ConstructorsConstructorDescriptionUnifiedThreadRoutingStrategy(UnifiedRestService unifiedRestService, ThreadRestService threadRestService) -
Method Summary
Modifier and TypeMethodDescriptionprivate intcalculateWorkgroupLoad(WorkgroupEntity workgroup) 计算工作组负载private MessageProtobufcreateAgentContinueMessage(ThreadEntity thread, VisitorRequest visitorRequest) 创建客服继续消息private MessageProtobufcreateContinueMessage(ThreadEntity thread, VisitorRequest visitorRequest) 创建继续会话消息private MessageProtobuf创建排队继续消息private MessageProtobuf创建机器人继续消息createThread(VisitorRequest visitorRequest) 创建线程的核心方法 由具体实现类负责处理不同类型的线程创建逻辑createUnifiedThread(VisitorRequest visitorRequest) 创建统一客服线程private MessageProtobufdelegateToWorkgroupStrategy(VisitorRequest visitorRequest, WorkgroupEntity workgroup) 委托给工作组策略处理private MessageProtobuffindExistingActiveThread(VisitorRequest visitorRequest, List<WorkgroupEntity> workgroups) 查找现有活跃会话protected ThreadRestService获取线程服务实例 由具体实现类提供private UnifiedEntitygetUnifiedEntity(String unifiedUid) 获取统一客服实体private booleanisThreadActive(ThreadEntity thread) 检查线程是否为活跃状态private WorkgroupEntityselectBestWorkgroup(List<WorkgroupEntity> workgroups) 选择最佳工作组Methods inherited from class com.bytedesk.service.routing_strategy.AbstractThreadRoutingStrategy
executeWithExceptionHandling, generateQueueMessage, getThreadByUid, getValidOfflineMessage, getValidWelcomeMessage, handleStrategyException, isActiveThread, isClosedThread, isMessageInCacheTime, isNewThread, logThreadStatusChange, saveThread, validateThread, validateUid
-
Field Details
-
unifiedRestService
-
threadRestService
-
-
Constructor Details
-
UnifiedThreadRoutingStrategy
public UnifiedThreadRoutingStrategy(UnifiedRestService unifiedRestService, ThreadRestService threadRestService)
-
-
Method Details
-
getThreadRestService
Description copied from class:AbstractThreadRoutingStrategy获取线程服务实例 由具体实现类提供- Specified by:
getThreadRestServicein classAbstractThreadRoutingStrategy- Returns:
- ThreadRestService实例
-
createThread
Description copied from class:AbstractThreadRoutingStrategy创建线程的核心方法 由具体实现类负责处理不同类型的线程创建逻辑- Specified by:
createThreadin classAbstractThreadRoutingStrategy- Parameters:
visitorRequest- 访客请求信息- Returns:
- 消息协议对象
-
createUnifiedThread
创建统一客服线程- Parameters:
visitorRequest- 访客请求- Returns:
- 消息协议对象
-
getUnifiedEntity
获取统一客服实体 -
findExistingActiveThread
private MessageProtobuf findExistingActiveThread(VisitorRequest visitorRequest, List<WorkgroupEntity> workgroups) 查找现有活跃会话 -
isThreadActive
检查线程是否为活跃状态 -
createContinueMessage
创建继续会话消息 -
createRobotContinueMessage
创建机器人继续消息 -
createAgentContinueMessage
private MessageProtobuf createAgentContinueMessage(ThreadEntity thread, VisitorRequest visitorRequest) 创建客服继续消息 -
createQueuingContinueMessage
创建排队继续消息 -
selectBestWorkgroup
选择最佳工作组选择策略: 1. 优先选择有在线客服的工作组 2. 其次选择负载最轻的工作组 3. 最后选择第一个可用工作组
-
calculateWorkgroupLoad
计算工作组负载 -
delegateToWorkgroupStrategy
private MessageProtobuf delegateToWorkgroupStrategy(VisitorRequest visitorRequest, WorkgroupEntity workgroup) 委托给工作组策略处理
-