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 AgentRestService
private final BytedeskEventPublisher
private final MessageRestService
private final IMessageSendService
private final QueueMemberRestService
private final QueueService
private final ThreadRestService
private final VisitorThreadService
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
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateAgentThread
(VisitorRequest visitorRequest) 创建客服线程 一对一人工客服,不支持机器人接待createThread
(VisitorRequest visitorRequest) 创建线程的核心方法 由具体实现类负责处理不同类型的线程创建逻辑private String
generateAgentQueueMessage
(QueueMemberEntity queueMemberEntity) 生成客服排队消息private MessageProtobuf
getAgentContinueMessage
(ThreadEntity thread) 获取客服继续对话消息private AgentEntity
getAgentEntity
(String agentUid) 获取客服实体private String
获取客服离线消息private MessageProtobuf
getAgentQueuingMessage
(ThreadEntity thread) 获取客服排队消息private String
获取客服欢迎消息private ThreadEntity
getOrCreateThread
(VisitorRequest visitorRequest, AgentEntity agentEntity, String topic) 获取或创建线程protected ThreadRestService
获取线程服务实例 由具体实现类提供private MessageProtobuf
handleAvailableAgent
(ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理可用客服(客服在线且未达到最大接待人数)private MessageProtobuf
handleExistingThread
(ThreadEntity thread, AgentEntity agentEntity) 处理已存在的线程private MessageProtobuf
handleOfflineAgent
(ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理离线客服private MessageProtobuf
handleQueuedAgent
(ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理排队客服(客服在线但已达到最大接待人数)private boolean
isExistingActiveThread
(ThreadEntity thread) 检查是否为已存在的活跃线程private void
publishThreadEvents
(ThreadEntity savedThread) 发布线程相关事件private MessageProtobuf
routeNewThread
(ThreadEntity thread, AgentEntity agentEntity, VisitorRequest visitorRequest) 路由新线程private MessageProtobuf
routeOnlineAgent
(ThreadEntity thread, AgentEntity agentEntity, QueueMemberEntity queueMemberEntity) 路由在线客服private void
updateQueueMemberForAcceptance
(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
-
-
Constructor Details
-
AgentThreadRoutingStrategy
public AgentThreadRoutingStrategy()
-
-
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:
- 消息协议对象
-
createAgentThread
创建客服线程 一对一人工客服,不支持机器人接待 -
getOrCreateThread
private ThreadEntity getOrCreateThread(VisitorRequest visitorRequest, AgentEntity agentEntity, String topic) 获取或创建线程 -
isExistingActiveThread
检查是否为已存在的活跃线程 -
handleExistingThread
处理已存在的线程 -
routeNewThread
private MessageProtobuf routeNewThread(ThreadEntity thread, AgentEntity agentEntity, VisitorRequest visitorRequest) 路由新线程 -
routeOnlineAgent
private MessageProtobuf routeOnlineAgent(ThreadEntity thread, AgentEntity agentEntity, QueueMemberEntity queueMemberEntity) 路由在线客服 -
handleAvailableAgent
private MessageProtobuf handleAvailableAgent(ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理可用客服(客服在线且未达到最大接待人数) -
handleQueuedAgent
private MessageProtobuf handleQueuedAgent(ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理排队客服(客服在线但已达到最大接待人数) -
handleOfflineAgent
private MessageProtobuf handleOfflineAgent(ThreadEntity threadFromRequest, AgentEntity agent, QueueMemberEntity queueMemberEntity) 处理离线客服 -
getAgentEntity
获取客服实体 -
getAgentWelcomeMessage
获取客服欢迎消息 -
getAgentOfflineMessage
获取客服离线消息 -
generateAgentQueueMessage
生成客服排队消息 -
updateQueueMemberForAcceptance
更新队列成员接受状态 -
publishThreadEvents
发布线程相关事件 -
getAgentContinueMessage
获取客服继续对话消息 -
getAgentQueuingMessage
获取客服排队消息
-