Class AgentThreadRoutingStrategy
java.lang.Object
com.bytedesk.service.routing_strategy.AbstractThreadRoutingStrategy
com.bytedesk.service.routing_strategy.AgentThreadRoutingStrategy
@Component("agentThreadStrategy")
public class AgentThreadRoutingStrategy
extends AbstractThreadRoutingStrategy
客服线程路由策略
负责处理一对一人工客服的线程创建和路由逻辑
- Author:
- jackning 270580156@qq.com
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AgentRestServiceprivate final BytedeskEventPublisherprivate final MessageRestServiceprivate final IMessageSendServiceprivate final PresenceFacadeServiceprivate final QueueMemberRestServiceprivate final QueueServiceprivate final ThreadRestServiceprivate final VisitorThreadServiceFields inherited from class com.bytedesk.service.routing_strategy.AbstractThreadRoutingStrategy
ESTIMATED_WAIT_TIME_PER_PERSON, MESSAGE_CACHE_MINUTES -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateAgentThread(VisitorRequest visitorRequest) 创建客服线程 一对一人工客服,不支持机器人接待createThread(VisitorRequest visitorRequest) 创建线程的核心方法 由具体实现类负责处理不同类型的线程创建逻辑private StringgenerateAgentQueueMessage(VisitorRequest visitorRequest, AgentEntity agent, int queuingCount, int avgWaitTimePerPerson) 生成客服排队消息(使用模板)private MessageProtobufgetAgentContinueMessage(ThreadEntity thread) 获取客服继续对话消息private AgentEntitygetAgentEntity(String agentUid) 获取客服实体private StringgetAgentOfflineMessage(VisitorRequest visitorRequest, AgentEntity agent) 获取客服离线消息private MessageProtobufgetAgentQueueMessage(ThreadEntity thread) 获取客服排队消息private QueueSettingsEntitygetAgentQueueSettings(VisitorRequest visitorRequest, AgentEntity agent) 获取客服排队配置private StringgetAgentWelcomeMessage(VisitorRequest visitorRequest, AgentEntity agent) private ThreadEntitygetOrCreateThread(VisitorRequest visitorRequest, AgentEntity agentEntity, String topic) 获取或创建线程protected ThreadRestService获取线程服务实例 由具体实现类提供private MessageProtobufhandleAvailableAgent(VisitorRequest visitorRequest, ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理可用客服(客服在线且未达到最大接待人数)private MessageProtobufhandleExistingThread(VisitorRequest request, ThreadEntity thread, AgentEntity agentEntity) 处理已存在的线程private MessageProtobufhandleOfflineAgent(VisitorRequest visitorRequest, ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理离线客服private MessageProtobufhandleQueuedAgent(VisitorRequest visitorRequest, ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理排队客服(客服在线但已达到最大接待人数)private booleanisDraftEnabled(VisitorRequest visitorRequest) 获取客服欢迎消息private booleanisExistingActiveThread(ThreadEntity thread) 检查是否为已存在的活跃线程private voidpublishThreadEvents(ThreadEntity savedThread) 发布线程相关事件private intresolveMaxWaiting(QueueSettingsEntity settings) private MessageProtobufrouteNewThread(ThreadEntity thread, AgentEntity agentEntity, VisitorRequest visitorRequest) 路由新线程private MessageProtobufrouteOnlineAgent(VisitorRequest visitorRequest, ThreadEntity thread, AgentEntity agentEntity, QueueMemberEntity queueMemberEntity) 路由在线客服private booleanshouldForceLeaveMessage(QueueEntity queue, QueueSettingsEntity settings) private voidupdateQueueMemberForAcceptance(QueueMemberEntity queueMemberEntity) 更新队列成员接受状态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
-
agentRestService
-
threadRestService
-
visitorThreadService
-
messageSendService
-
queueService
-
queueMemberRestService
-
messageRestService
-
bytedeskEventPublisher
-
presenceFacadeService
-
-
Constructor Details
-
AgentThreadRoutingStrategy
public AgentThreadRoutingStrategy()
-
-
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:
- 消息协议对象
-
createAgentThread
创建客服线程 一对一人工客服,不支持机器人接待 -
getOrCreateThread
private ThreadEntity getOrCreateThread(VisitorRequest visitorRequest, AgentEntity agentEntity, String topic) 获取或创建线程 -
isExistingActiveThread
检查是否为已存在的活跃线程 -
handleExistingThread
private MessageProtobuf handleExistingThread(VisitorRequest request, ThreadEntity thread, AgentEntity agentEntity) 处理已存在的线程 -
routeNewThread
private MessageProtobuf routeNewThread(ThreadEntity thread, AgentEntity agentEntity, VisitorRequest visitorRequest) 路由新线程 -
routeOnlineAgent
private MessageProtobuf routeOnlineAgent(VisitorRequest visitorRequest, ThreadEntity thread, AgentEntity agentEntity, QueueMemberEntity queueMemberEntity) 路由在线客服 -
handleAvailableAgent
private MessageProtobuf handleAvailableAgent(VisitorRequest visitorRequest, ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理可用客服(客服在线且未达到最大接待人数) -
handleQueuedAgent
private MessageProtobuf handleQueuedAgent(VisitorRequest visitorRequest, ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理排队客服(客服在线但已达到最大接待人数) -
handleOfflineAgent
private MessageProtobuf handleOfflineAgent(VisitorRequest visitorRequest, ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理离线客服 -
getAgentEntity
获取客服实体 -
isDraftEnabled
获取客服欢迎消息 -
getAgentWelcomeMessage
-
getAgentOfflineMessage
获取客服离线消息 -
getAgentQueueSettings
获取客服排队配置 -
shouldForceLeaveMessage
-
resolveMaxWaiting
-
generateAgentQueueMessage
private String generateAgentQueueMessage(VisitorRequest visitorRequest, AgentEntity agent, int queuingCount, int avgWaitTimePerPerson) 生成客服排队消息(使用模板)- Parameters:
agent- 客服实体queuingCount- 当前排队人数avgWaitTimePerPerson- 每人平均等待时长(秒)- Returns:
- 替换模板变量后的排队提示语
-
updateQueueMemberForAcceptance
更新队列成员接受状态 -
publishThreadEvents
发布线程相关事件 -
getAgentContinueMessage
获取客服继续对话消息 -
getAgentQueueMessage
获取客服排队消息
-