Class TicketThreadRoutingStrategy
java.lang.Object
com.bytedesk.service.routing_strategy.AbstractThreadRoutingStrategy
com.bytedesk.ticket.routing_strategy.TicketThreadRoutingStrategy
@Component("ticketThreadStrategy")
public class TicketThreadRoutingStrategy
extends AbstractThreadRoutingStrategy
工单线程路由策略
功能特点: - 根据传入的 ticketUid 直接加载现有会话 - 支持工单对话的查看和继续 - 不创建新会话,仅加载已存在的工单会话
处理流程: 1. 验证 ticketUid 参数 2. 根据 ticketUid 查找会话 3. 返回会话信息和最后一条消息
- Since:
- 1.0.0
- Author:
- jackning 270580156@qq.com
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final BytedeskEventPublisherprivate final MessageRestServiceprivate final IMessageSendServiceprivate final ThreadRestServiceprivate final TicketRepositoryprivate final TicketSettingsRestServiceprivate final WorkgroupRestServiceprivate final WorkgroupRoutingServiceFields inherited from class com.bytedesk.service.routing_strategy.AbstractThreadRoutingStrategy
ESTIMATED_WAIT_TIME_PER_PERSON, MESSAGE_CACHE_MINUTES -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate MessageProtobufbuildClosedMessageProtobuf(ThreadEntity thread, String closeTip) private MessageProtobuf构建空消息协议对象(仅包含会话信息)createThread(VisitorRequest visitorRequest) 创建线程的核心方法 由具体实现类负责处理不同类型的线程创建逻辑private ThreadEntityensureThreadAgentAssigned(ThreadEntity thread, TicketEntity ticket) private voidensureThreadWorkgroup(ThreadEntity thread, String workgroupUid) protected ThreadRestService获取线程服务实例 由具体实现类提供private MessageProtobufgetTicketThreadMessage(ThreadEntity thread) 构建工单会话消息响应private MessageProtobufgetTicketThreadMessageReadOnly(ThreadEntity thread, String closeTip) private MessageProtobufhandleTicketThreadNew(ThreadEntity threadFromDb, TicketEntity ticket, VisitorRequest visitorRequest) 处理工单会话 NEW 状态: - 发送工单接入提示语 - 切换线程状态为 CHATTING - 发布转接事件通知被分配客服private booleanhasAssignedAgent(ThreadEntity thread) loadTicketThread(VisitorRequest visitorRequest) 加载工单会话private TicketBasicSettingsResponseresolveBasicSettings(TicketEntity ticket) 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
-
threadRestService
-
messageRestService
-
ticketRepository
-
workgroupRestService
-
workgroupRoutingService
-
ticketSettingsRestService
-
messageSendService
-
bytedeskEventPublisher
-
-
Constructor Details
-
TicketThreadRoutingStrategy
public TicketThreadRoutingStrategy()
-
-
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:
- 消息协议对象
-
loadTicketThread
加载工单会话根据 VisitorRequest 中的 sid(作为 ticketUid)加载工单,并获取其 threadUid/workgroupUid 然后为该工单会话按工作组路由规则分配客服(如尚未分配),并返回会话信息与最后一条消息
- Parameters:
visitorRequest- 访客请求,sid 字段作为 ticketUid 使用- Returns:
- 消息协议对象,包含会话信息
- Throws:
IllegalArgumentException- 如果 ticketUid 为空、工单不存在或会话不存在
-
resolveBasicSettings
-
handleTicketThreadNew
private MessageProtobuf handleTicketThreadNew(ThreadEntity threadFromDb, TicketEntity ticket, VisitorRequest visitorRequest) 处理工单会话 NEW 状态: - 发送工单接入提示语 - 切换线程状态为 CHATTING - 发布转接事件通知被分配客服 -
ensureThreadWorkgroup
-
ensureThreadAgentAssigned
-
hasAssignedAgent
-
getTicketThreadMessage
构建工单会话消息响应- Parameters:
thread- 工单会话实体- Returns:
- 消息协议对象
-
getTicketThreadMessageReadOnly
-
buildEmptyMessageProtobuf
构建空消息协议对象(仅包含会话信息)- Parameters:
thread- 会话实体- Returns:
- 消息协议对象
-
buildClosedMessageProtobuf
-