diff --git a/deploy/docker/docker-compose-ollama.yaml b/deploy/docker/docker-compose-ollama.yaml index d1cbb12253..2923013c78 100644 --- a/deploy/docker/docker-compose-ollama.yaml +++ b/deploy/docker/docker-compose-ollama.yaml @@ -350,6 +350,22 @@ services: ALIYUN_SMS_SIGNNAME: '' #阿里云短信服务的模板Code,可以在控制台找到 ALIYUN_SMS_TEMPLATECODE: '' + # Artemis JMS 配置 + SPRING_ARTEMIS_MODE: native + SPRING_ARTEMIS_BROKER_URL: tcp://artemis-bytedesk:61616 + SPRING_ARTEMIS_USER: admin + SPRING_ARTEMIS_PASSWORD: admin + SPRING_JMS_LISTENER_CONCURRENCY: 1 + SPRING_JMS_LISTENER_MAX_CONCURRENCY: 10 + SPRING_JMS_LISTENER_ACKNOWLEDGE_MODE: client + SPRING_JMS_LISTENER_AUTO_STARTUP: true + SPRING_JMS_LISTENER_MAX_ATTEMPTS: 5 + SPRING_JMS_LISTENER_INITIAL_INTERVAL: 1000 + SPRING_JMS_LISTENER_MAX_INTERVAL: 10000 + SPRING_JMS_LISTENER_MULTIPLIER: 2.0 + SPRING_JMS_LISTENER_RECEIVE_TIMEOUT: 1000 + SPRING_ARTEMIS_EMBEDDED_QUEUES: DLQ + SPRING_JMS_LISTENER_MISSING_QUEUES_FATAL: false # springdoc SPRINGDOC_SHOW_ACTUATOR: false # swagger-ui diff --git a/deploy/docker/docker-compose.yaml b/deploy/docker/docker-compose.yaml index adfddc92c0..63994c64d3 100644 --- a/deploy/docker/docker-compose.yaml +++ b/deploy/docker/docker-compose.yaml @@ -353,6 +353,22 @@ services: # 增加数据库连接超时时间 SPRING_DATASOURCE_HIKARI_CONNECTION_TIMEOUT: 60000 SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE: 10 + # Artemis JMS 配置 + SPRING_ARTEMIS_MODE: native + SPRING_ARTEMIS_BROKER_URL: tcp://artemis-bytedesk:61616 + SPRING_ARTEMIS_USER: admin + SPRING_ARTEMIS_PASSWORD: admin + SPRING_JMS_LISTENER_CONCURRENCY: 1 + SPRING_JMS_LISTENER_MAX_CONCURRENCY: 10 + SPRING_JMS_LISTENER_ACKNOWLEDGE_MODE: client + SPRING_JMS_LISTENER_AUTO_STARTUP: true + SPRING_JMS_LISTENER_MAX_ATTEMPTS: 5 + SPRING_JMS_LISTENER_INITIAL_INTERVAL: 1000 + SPRING_JMS_LISTENER_MAX_INTERVAL: 10000 + SPRING_JMS_LISTENER_MULTIPLIER: 2.0 + SPRING_JMS_LISTENER_RECEIVE_TIMEOUT: 1000 + SPRING_ARTEMIS_EMBEDDED_QUEUES: DLQ + SPRING_JMS_LISTENER_MISSING_QUEUES_FATAL: false ports: - 9003:9003 - 9885:9885 diff --git a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java index d9227a494e..d2918e7d65 100644 --- a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java +++ b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-06-29 13:08:52 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-05-12 15:20:26 + * @LastEditTime: 2025-05-19 12:07:40 * @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. @@ -110,9 +110,42 @@ public class VisitorThreadService String workgroupString = ServiceConvertUtils.convertToUserProtobufJSONString(workgroup); String extra = ServiceConvertUtils .convertToServiceSettingsResponseVisitorJSONString(workgroup.getServiceSettings()); + + // 处理微信相关额外信息 if (visitorRequest.isWeChat()) { - extra = visitorRequest.getWeChatThreadExtra(); + String weChatExtra = visitorRequest.getWeChatThreadExtra(); + + // 如果是企业微信客服,需要特殊处理 + if (ClientEnum.WECHAT_WORK.name().equals(visitorRequest.getClient()) && StringUtils.hasText(weChatExtra)) { + // 创建新的extra JSON对象 + JSONObject extraJson = new JSONObject(); + + // // 获取原始的服务配置 + // ServiceSettingsResponseVisitor settings = workgroup.getServiceSettings(); + // if (settings != null) { + // // 将服务配置转换为JSON并合并 + // String settingsJson = ServiceConvertUtils.convertToServiceSettingsResponseVisitorJSONString(settings); + // if (StringUtils.hasText(settingsJson)) { + // try { + // JSONObject settingsObject = JSON.parseObject(settingsJson); + // extraJson.putAll(settingsObject); + // } catch (Exception e) { + // log.warn("解析服务配置JSON时出错: {}", e.getMessage()); + // } + // } + // } + + // 将企业微信配置放入extra中的weChatWorkExtra字段 + extraJson.put("weChatWorkExtra", weChatExtra); + extra = extraJson.toJSONString(); + + log.info("企业微信客服创建线程:设置weChatWorkExtra字段: {}", weChatExtra); + } else { + // 普通微信,直接设置 + extra = weChatExtra; + } } + // ThreadEntity thread = ThreadEntity.builder() .uid(uidUtils.getUid())