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 ThreadRestService
private final UnifiedRestService
Fields 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 int
calculateWorkgroupLoad
(WorkgroupEntity workgroup) 计算工作组负载private MessageProtobuf
createAgentContinueMessage
(ThreadEntity thread, VisitorRequest visitorRequest) 创建客服继续消息private MessageProtobuf
createContinueMessage
(ThreadEntity thread, VisitorRequest visitorRequest) 创建继续会话消息private MessageProtobuf
创建排队继续消息private MessageProtobuf
创建机器人继续消息createThread
(VisitorRequest visitorRequest) 创建线程的核心方法 由具体实现类负责处理不同类型的线程创建逻辑createUnifiedThread
(VisitorRequest visitorRequest) 创建统一客服线程private MessageProtobuf
delegateToWorkgroupStrategy
(VisitorRequest visitorRequest, WorkgroupEntity workgroup) 委托给工作组策略处理private MessageProtobuf
findExistingActiveThread
(VisitorRequest visitorRequest, List<WorkgroupEntity> workgroups) 查找现有活跃会话protected ThreadRestService
获取线程服务实例 由具体实现类提供private UnifiedEntity
getUnifiedEntity
(String unifiedUid) 获取统一客服实体private boolean
isThreadActive
(ThreadEntity thread) 检查线程是否为活跃状态private WorkgroupEntity
selectBestWorkgroup
(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:
getThreadRestService
in classAbstractThreadRoutingStrategy
- Returns:
- ThreadRestService实例
-
createThread
Description copied from class:AbstractThreadRoutingStrategy
创建线程的核心方法 由具体实现类负责处理不同类型的线程创建逻辑- Specified by:
createThread
in 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) 委托给工作组策略处理
-