From 8ecfcdc09fb0c87f81e71ac6792512efe4d8bf69 Mon Sep 17 00:00:00 2001 From: jack ning Date: Mon, 14 Apr 2025 16:57:48 +0800 Subject: [PATCH] update --- .../core/thread/ThreadRestController.java | 11 +---- .../core/thread/ThreadRestService.java | 26 +----------- .../core/thread/event/ThreadAcceptEvent.java | 4 +- .../core/thread/event/ThreadCloseEvent.java | 6 +-- .../service/agent/AgentRestController.java | 35 ++++++++++------ .../service/agent/AgentRestService.java | 42 ++++++++++++++++++- .../AgentThreadRoutingStrategy.java | 18 ++++---- .../WorkgroupThreadRoutingStrategy.java | 18 ++++---- 8 files changed, 89 insertions(+), 71 deletions(-) diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.java b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.java index fa29062120..9c25b43db6 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-01-29 16:21:24 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-04-14 15:56:44 + * @LastEditTime: 2025-04-14 16:47:21 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -186,15 +186,6 @@ public class ThreadRestController extends BaseRestController { return ResponseEntity.ok(JsonResult.success("delete thread success")); } - @ActionAnnotation(title = "会话", action = "accept", description = "accept thread") - @PostMapping("/accept") - public ResponseEntity acceptByAgent (@RequestBody ThreadRequest request) { - - ThreadResponse threadResponse = threadService.acceptByAgent(request); - - return ResponseEntity.ok(JsonResult.success(threadResponse)); - } - // https://github.com/alibaba/easyexcel // https://easyexcel.opensource.alibaba.com/docs/current/ @ActionAnnotation(title = "会话", action = "导出", description = "export thread") diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java index baa78e0210..dcaf7fecf0 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-01-29 16:21:24 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-04-14 15:55:59 + * @LastEditTime: 2025-04-14 16:53:32 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -45,7 +45,6 @@ import com.bytedesk.core.rbac.user.UserUtils; import com.bytedesk.core.tag.TagRequest; import com.bytedesk.core.tag.TagRestService; import com.bytedesk.core.tag.TagTypeEnum; -import com.bytedesk.core.thread.event.ThreadAcceptEvent; import com.bytedesk.core.thread.event.ThreadCloseEvent; import com.bytedesk.core.topic.TopicUtils; import com.bytedesk.core.uid.UidUtils; @@ -113,7 +112,6 @@ public class ThreadRestService extends BaseRestService threadOptional = findFirstByTopicAndOwner(request.getTopic(), owner); @@ -498,31 +496,11 @@ public class ThreadRestService extends BaseRestService threadOptional = findByUid(threadRequest.getUid()); - if (!threadOptional.isPresent()) { - throw new RuntimeException("accept thread " + threadRequest.getUid() + " not found"); - } - ThreadEntity thread = threadOptional.get(); - thread.setStatus(ThreadProcessStatusEnum.CHATTING.name()); - thread.setAgent(threadRequest.getAgent()); - // - ThreadEntity updateThread = save(thread); - if (updateThread == null) { - throw new RuntimeException("thread save failed"); - } - // 通知queue更新,queue member更新, 增加agent接待数量 - bytedeskEventPublisher.publishEvent(new ThreadAcceptEvent(updateThread)); - - return convertToResponse(updateThread); - } - // 获取当前接待会话数量 public int countByThreadTopicAndState(String topic, String state) { return threadRepository.countByTopicAndStatusAndDeletedFalse(topic, state); diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadAcceptEvent.java b/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadAcceptEvent.java index 890345d04c..76316f77dc 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadAcceptEvent.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadAcceptEvent.java @@ -26,8 +26,8 @@ public class ThreadAcceptEvent extends ApplicationEvent { private ThreadEntity thread; - public ThreadAcceptEvent(ThreadEntity thread) { - super(thread); + public ThreadAcceptEvent(Object source, ThreadEntity thread) { + super(source); this.thread = thread; } } diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadCloseEvent.java b/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadCloseEvent.java index 1b98a0063d..1bd8ee1a7a 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadCloseEvent.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/event/ThreadCloseEvent.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-04-23 08:51:27 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2024-12-20 12:34:58 + * @LastEditTime: 2025-04-14 16:39:47 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -26,8 +26,8 @@ public class ThreadCloseEvent extends ApplicationEvent { private ThreadEntity thread; - public ThreadCloseEvent(ThreadEntity thread) { - super(thread); + public ThreadCloseEvent(Object source, ThreadEntity thread) { + super(source); this.thread = thread; } diff --git a/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestController.java b/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestController.java index 0c652ff752..cf05ec093e 100644 --- a/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestController.java +++ b/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestController.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-01-29 16:19:51 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-04-10 09:54:04 + * @LastEditTime: 2025-04-14 16:47:31 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -34,6 +34,8 @@ import com.bytedesk.core.annotation.BlackIpFilter; import com.bytedesk.core.annotation.BlackUserFilter; import com.bytedesk.core.annotation.TabooJsonFilter; import com.bytedesk.core.base.BaseRestController; +import com.bytedesk.core.thread.ThreadRequest; +import com.bytedesk.core.thread.ThreadResponse; // import com.bytedesk.core.rbac.role.RolePermissions; import com.bytedesk.core.utils.JsonResult; @@ -47,7 +49,7 @@ import lombok.extern.slf4j.Slf4j; @RequestMapping("/api/v1/agent") public class AgentRestController extends BaseRestController { - private final AgentRestService agentService; + private final AgentRestService agentRestService; private final RobotService robotService; @@ -57,7 +59,7 @@ public class AgentRestController extends BaseRestController { @Override public ResponseEntity queryByOrg(AgentRequest request) { - Page page = agentService.queryByOrg(request); + Page page = agentRestService.queryByOrg(request); return ResponseEntity.ok(JsonResult.success(page)); } @@ -66,7 +68,7 @@ public class AgentRestController extends BaseRestController { @Override public ResponseEntity queryByUser(AgentRequest request) { - AgentResponse agentResponse = agentService.query(request); + AgentResponse agentResponse = agentRestService.query(request); return ResponseEntity.ok(JsonResult.success(agentResponse)); } @@ -83,17 +85,26 @@ public class AgentRestController extends BaseRestController { @GetMapping("/query/detail") public ResponseEntity queryDetail(AgentRequest request) { - AgentResponse agent = agentService.queryDetail(request.getUid()); + AgentResponse agent = agentRestService.queryDetail(request.getUid()); return ResponseEntity.ok(JsonResult.success(agent)); } + @ActionAnnotation(title = "会话", action = "accept", description = "accept thread") + @PostMapping("/accept") + public ResponseEntity acceptByAgent (@RequestBody ThreadRequest request) { + + ThreadResponse threadResponse = agentRestService.acceptByAgent(request); + + return ResponseEntity.ok(JsonResult.success(threadResponse)); + } + // @PreAuthorize("hasAuthority('AGENT_READ')") // @ActionAnnotation(title = "客服", action = "syncCurrentThreadCount", description = "sync agent current thread count") @PostMapping("/sync/current/thread/count") public ResponseEntity syncCurrentThreadCount(@RequestBody AgentRequest request) { - AgentResponse agent = agentService.syncCurrentThreadCount(request); + AgentResponse agent = agentRestService.syncCurrentThreadCount(request); if (agent != null) { return ResponseEntity.ok(JsonResult.success(agent)); } @@ -105,7 +116,7 @@ public class AgentRestController extends BaseRestController { @Override public ResponseEntity create(@RequestBody AgentRequest request) { - AgentResponse agent = agentService.create(request); + AgentResponse agent = agentRestService.create(request); if (agent == null) { return ResponseEntity.ok(JsonResult.error("create agent failed")); } @@ -118,7 +129,7 @@ public class AgentRestController extends BaseRestController { @Override public ResponseEntity update(@RequestBody AgentRequest request) { - AgentResponse agent = agentService.update(request); + AgentResponse agent = agentRestService.update(request); // return ResponseEntity.ok(JsonResult.success(agent)); } @@ -129,7 +140,7 @@ public class AgentRestController extends BaseRestController { @PostMapping("/update/avatar") public ResponseEntity updateAvatar(@RequestBody AgentRequest request) { - AgentResponse agent = agentService.updateAvatar(request); + AgentResponse agent = agentRestService.updateAvatar(request); return ResponseEntity.ok(JsonResult.success(agent)); } @@ -139,7 +150,7 @@ public class AgentRestController extends BaseRestController { @PostMapping("/update/status") public ResponseEntity updateStatus(@RequestBody AgentRequest request) { - AgentResponse agent = agentService.updateStatus(request); + AgentResponse agent = agentRestService.updateStatus(request); // return ResponseEntity.ok(JsonResult.success(agent)); } @@ -149,7 +160,7 @@ public class AgentRestController extends BaseRestController { @PostMapping("/update/autoreply") public ResponseEntity updateAutoReply(@RequestBody AgentRequest request) { - AgentResponse agent = agentService.updateAutoReply(request); + AgentResponse agent = agentRestService.updateAutoReply(request); // return ResponseEntity.ok(JsonResult.success(agent)); } @@ -159,7 +170,7 @@ public class AgentRestController extends BaseRestController { @Override public ResponseEntity delete(@RequestBody AgentRequest request) { - agentService.deleteByUid(request.getUid()); + agentRestService.deleteByUid(request.getUid()); // return ResponseEntity.ok(JsonResult.success(request)); } diff --git a/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestService.java b/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestService.java index 94aa20e154..7041f8f165 100644 --- a/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestService.java +++ b/modules/service/src/main/java/com/bytedesk/service/agent/AgentRestService.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-01-29 16:19:51 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-04-11 11:21:48 + * @LastEditTime: 2025-04-14 16:53:05 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -41,8 +41,16 @@ import com.bytedesk.core.base.BaseRestService; import com.bytedesk.core.config.BytedeskEventPublisher; import com.bytedesk.core.rbac.auth.AuthService; import com.bytedesk.core.rbac.user.UserEntity; +import com.bytedesk.core.rbac.user.UserProtobuf; import com.bytedesk.core.rbac.user.UserService; import com.bytedesk.core.socket.mqtt.MqttConnectionService; +import com.bytedesk.core.thread.ThreadEntity; +import com.bytedesk.core.thread.ThreadProcessStatusEnum; +import com.bytedesk.core.thread.ThreadRequest; +import com.bytedesk.core.thread.ThreadResponse; +import com.bytedesk.core.thread.ThreadRestService; +import com.bytedesk.core.thread.event.ThreadAcceptEvent; +import com.bytedesk.core.thread.event.ThreadAddTopicEvent; import com.bytedesk.core.uid.UidUtils; import com.bytedesk.kbase.auto_reply.settings.AutoReplySettings; import com.bytedesk.kbase.settings.InviteSettings; @@ -84,7 +92,7 @@ public class AgentRestService extends BaseRestService queryByOrg(AgentRequest request) { Pageable pageable = request.getPageable(); @@ -271,6 +279,36 @@ public class AgentRestService extends BaseRestService agentOptional = agentRepository.findByUserUid(user.getUid()); + if (!agentOptional.isPresent()) { + throw new RuntimeException("agent not found"); + } + // + Optional threadOptional = threadRestService.findByUid(threadRequest.getUid()); + if (!threadOptional.isPresent()) { + throw new RuntimeException("accept thread " + threadRequest.getUid() + " not found"); + } + ThreadEntity thread = threadOptional.get(); + AgentEntity agent = agentOptional.get(); + thread.setStatus(ThreadProcessStatusEnum.CHATTING.name()); + UserProtobuf agentProtobuf = agent.toUserProtobuf(); + thread.setAgent(agentProtobuf.toJson()); + thread.setOwner(agent.getMember().getUser()); + // + ThreadEntity updateThread = threadRestService.save(thread); + if (updateThread == null) { + throw new RuntimeException("thread save failed"); + } + // 通知queue更新,queue member更新, 增加agent接待数量 + bytedeskEventPublisher.publishEvent(new ThreadAddTopicEvent(this, updateThread)); + bytedeskEventPublisher.publishEvent(new ThreadAcceptEvent(this, updateThread)); + + return threadRestService.convertToResponse(updateThread); + } + public AgentResponse syncCurrentThreadCount(AgentRequest request) { if (StringUtils.hasText(request.getUid())) { diff --git a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/AgentThreadRoutingStrategy.java b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/AgentThreadRoutingStrategy.java index 197d27a076..1d924f10d5 100644 --- a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/AgentThreadRoutingStrategy.java +++ b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/AgentThreadRoutingStrategy.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-07-15 15:58:11 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-04-14 16:36:14 + * @LastEditTime: 2025-04-14 16:41:42 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -16,11 +16,11 @@ package com.bytedesk.service.routing_strategy; import java.time.LocalDateTime; import java.util.Optional; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; import org.springframework.util.Assert; import com.alibaba.fastjson2.JSON; +import com.bytedesk.core.config.BytedeskEventPublisher; import com.bytedesk.core.message.IMessageSendService; import com.bytedesk.core.message.MessageEntity; import com.bytedesk.core.message.MessageProtobuf; @@ -70,7 +70,7 @@ public class AgentThreadRoutingStrategy implements ThreadRoutingStrategy { private final MessageRestService messageRestService; - private final ApplicationEventPublisher applicationEventPublisher; + private final BytedeskEventPublisher bytedeskEventPublisher; @Override public MessageProtobuf createThread(VisitorRequest visitorRequest) { @@ -167,8 +167,8 @@ public class AgentThreadRoutingStrategy implements ThreadRoutingStrategy { queueMemberEntity.setAgentAcceptType(QueueMemberAcceptTypeEnum.AUTO.name()); queueMemberRestService.save(queueMemberEntity); // - applicationEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); - applicationEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); // MessageProtobuf messageProtobuf = ThreadMessageUtil.getThreadWelcomeMessage(content, thread); messageSendService.sendProtobufMessage(messageProtobuf); @@ -202,8 +202,8 @@ public class AgentThreadRoutingStrategy implements ThreadRoutingStrategy { throw new RuntimeException("Failed to save thread " + thread.getUid()); } // - applicationEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); - applicationEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); // MessageProtobuf messageProtobuf = ThreadMessageUtil.getAgentThreadQueueMessage(agent, thread); messageSendService.sendProtobufMessage(messageProtobuf); @@ -254,8 +254,8 @@ public class AgentThreadRoutingStrategy implements ThreadRoutingStrategy { MessageProtobuf messageProtobuf = ServiceConvertUtils.convertToMessageProtobuf(message, savedThread); messageSendService.sendProtobufMessage(messageProtobuf); // - applicationEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); - applicationEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); // return messageProtobuf; } diff --git a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java index edff76a000..d7837a7e85 100644 --- a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java +++ b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-07-15 15:58:23 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-04-14 16:37:57 + * @LastEditTime: 2025-04-14 16:41:14 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -15,13 +15,13 @@ package com.bytedesk.service.routing_strategy; import java.util.Optional; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; import org.springframework.util.Assert; import com.alibaba.fastjson2.JSON; import com.bytedesk.ai.robot.RobotEntity; import com.bytedesk.ai.utils.ConvertAiUtils; +import com.bytedesk.core.config.BytedeskEventPublisher; import com.bytedesk.core.message.IMessageSendService; import com.bytedesk.core.message.MessageEntity; import com.bytedesk.core.message.MessageProtobuf; @@ -78,7 +78,7 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { private final WorkgroupRoutingService workgroupRoutingService; - private final ApplicationEventPublisher applicationEventPublisher; + private final BytedeskEventPublisher bytedeskEventPublisher; @Override public MessageProtobuf createThread(VisitorRequest visitorRequest) { @@ -184,7 +184,7 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { // log.info("routeAgent Enqueued to queue {}", queueMemberEntity.getUid()); if (visitorRequest.getForceAgent()) { // 只有接待客服是robot接待时,前端才会显示转人工按钮,转人工 - applicationEventPublisher.publishEvent(new ThreadTransferToAgentEvent(this, thread)); + bytedeskEventPublisher.publishEvent(new ThreadTransferToAgentEvent(this, thread)); queueMemberEntity.transferRobotToAgent(); // 更新 queueMemberEntity queueMemberEntity = queueMemberRestService.save(queueMemberEntity); @@ -231,8 +231,8 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { queueMemberEntity.agentAutoAcceptThread(); queueMemberRestService.save(queueMemberEntity); // - applicationEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); - applicationEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadAddTopicEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); // MessageProtobuf messageProtobuf = ThreadMessageUtil.getThreadWelcomeMessage(content, savedThread); messageSendService.sendProtobufMessage(messageProtobuf); @@ -266,7 +266,7 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { throw new RuntimeException("Failed to save thread"); } // - applicationEventPublisher.publishEvent(new ThreadAgentQueueEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadAgentQueueEvent(this, savedThread)); // MessageProtobuf messageProtobuf = ThreadMessageUtil.getAgentThreadQueueMessage(agent, savedThread); messageSendService.sendProtobufMessage(messageProtobuf); @@ -303,7 +303,7 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { MessageProtobuf messageProtobuf = ServiceConvertUtils.convertToMessageProtobuf(message, savedThread); messageSendService.sendProtobufMessage(messageProtobuf); // - applicationEventPublisher.publishEvent(new ThreadAgentOfflineEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadAgentOfflineEvent(this, savedThread)); // return messageProtobuf; } @@ -362,7 +362,7 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { queueMemberEntity.robotAutoAcceptThread(); queueMemberRestService.save(queueMemberEntity); // - applicationEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); + bytedeskEventPublisher.publishEvent(new ThreadProcessCreateEvent(this, savedThread)); // 如果拉取的是访客的消息,会影响前端 // 查询最新一条消息,如果距离当前时间不超过30分钟,则直接使用之前的消息,否则创建新的消息