Imaging proxy with HTTP Range support and per-member download tracking
On-demand translation for chat and support messages
Captures the source language for every chat / support message and adds an optional ?lang=XX param on the message-fetch endpoints plus a per-message POST /transl...
播放等待计数 + 在代理读取的访客发送
- 现在代表到 所以数 反映未读的访客信件和当 特工呼叫马克·阿斯雷德 - 新的公共帮助者。 - 现在(a)重播经纪人的 (b) 调用 帮助器,使导航支持按钮保持同步而不等待 下60年代的民意调查 - 也叫帮手 导航系统在访客发出时会爆炸 导航点数与每行徽章状态一致 在单击和浏览器刷新后.
与 SockJS 并列添加 /ws/ public- chat- nature 平地 WebSocket 端点
在/ws/公共-聊天-内语中登记第二个STOMP终点,而不使用SockJS 前端可以与本地的 WebSocket( 经纪人URL) 连接而无需 Sockjs-客户端图书馆,该图书馆登记了违反《公约》规定的卸货处理器。 网站权限政策. 原始/ws/公交SockJS端点保留 为后向相容性.
在访客消息中向代理播放未读数
访问者发出支持信息后,请按最新未读数 所以代理商的票单 徽章和导航计数器实时更新。 显示广播内容 Media Captain.sendMessage 供会员间聊天.
曝光城市和游客地理考察分区
- 在城市和分区领域扩大地理结果记录 - 切换支持Ticket Service.toDTO () 以使用 GeoLookup Service(IP级) 而不是国家地理数据库,所以城市和 子分区来自匹配的 GeoLite 块
在支持票头显示访客旗和位置
- 注入公共图片存储器和地理图片存储器 - 通过地理检索传播访问者信息、访问者国家代码、访问者国家Name - GeoLookupService 已经为访问者提供访问。 国家代码在会话创建时
通过STOMP/NATS实时修复端到端的公共聊天
- 从公共聊天网中取消内部认证要求 因此访问者只能使用会话Token直接连接 - 在 ChatMessageDto 代理中包含访客显示Name 作为发送者Name 看看谁在给她们发短信 - 在 STOMP 信件中包含发送者Name 从 NATS 订阅中传送的 Map 因此,代理和访客都会在实时消息中看到发送者姓名
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
Add conversion progress NATS-to-STOMP relay
Relays document conversion progress from NATS to WebSocket clients. Supports both imgId-based and member-based topic routing for real-time progress updates duri...
Enforce minimum advance booking when filtering available slots
Filters out slots that fall within the configured minAdvanceBookingMinutes window, and persists the field on create/update of webinar types.
Implement webinar scheduling backend with full business logic
Adds the core webinar scheduling system to MediaService: - WebinarService: CRUD for **************** presenter assignment **************** calendar conflict ...
Add ***-authenticated API key management endpoints for public chat
Adds /api/media/public-chat-keys CRUD endpoints for managing PublicChatApiKey shown once at creation. Uses same *** auth pattern as SupportController.
Add public chat support endpoints with anonymous visitor sessions and WebSocket auth
Adds REST endpoints for public chat session creation, messaging, and visitor management. Includes PublicChatWebSocketInterceptor for token-based WebSocket auth ...
Include org static background images in meet virtual backgrounds
Fetch backgroundImageCount from the org's theme config.json and generate URLs for /img/bg/{n}.webp so org-level static backgrounds appear alongside meet-specifi...
Add public config and backgrounds endpoints for sidecar consumption
GET /api/meet/public-config?domain= returns org meet config by domain. GET **************** returns combined virtual backgrounds. Both endpoints are unauthentic...
Add config CRUD, background management, and org-theme endpoints
All endpoints enforce MANAGE_MEET_SETTINGS privilege. Config auto-creates with defaults on first access per org. Background uploads go to MinIO with SHA-256 has...
Implement chat WebSocket and email invite sending for meetings
MeetController now reads sendChatInvite, sendEmailInvite, and customMessage from the create request body and triggers async invite sending. MeetService.sendInv...
Add GET /api/meet/exists/{roomName} endpoint for anonymous room validation
Add MeetConfigController and MeetConfigService for org-level meet settings
REST endpoints for CRUD on OrgMeetConfig and MeetBackground entities. Supports config get/update, background upload/delete/reorder via MinIO storage.
Add MeetController and MeetService for meeting creation and invite management
Add unread count API endpoint, mark-as-read endpoint, and WebSocket broadcast
- GET /api/media/sessions/chat/unread returns per-session and per-sender unread counts - PUT /api/media/sessions/{guid}/read marks a session as read for current...
Add PRE_TICKET creation and convert-to-ticket endpoint
- createTicket: when preTicket=true, sets status to PRE_TICKET, skips assignment (no title required) - PUT /tickets/{id}/convert: converts PRE_TICKET to NEW, ...
添加支持票服务、REST控制器和STOMP中继器
执行支持票系统的MediaService后端: - 支持TopicService:用于Org范围支持主题的 CRUD - 支持指定服务:圆形robin(带有悲观锁),手动接车,管理员指定 - 支助通知服务:NATS代理通知 - 支持TicketService:售票生命周期(创建、状态、优先级、分配、重新分配、升级、费率...
通过*** cookie 握手截取器添加 WebSocket 认证
添加WebSocketAuth Interceptor,在握手时读作*** cookie, 通过 KSessionService 解决会话,并将成员Id/orgId 存储到 WebSocket 会话属性. 在 STOMP CONNECT 上设置特等 下游存在和通知特性.
添加同步调用检测和自动连接 - 跟踪每个会话的待接呼叫以检测同步尝试 - 当两个用户同时调用时自动解决 - 使用第一调用者的调用ID和自动接受第二调用 - 清理待接的响应/终端呼叫 - 删除重复的其他成员查询码
执行正确的调用启动和接受流程 - 后端向其他用户发送调用启动 WebSocket通知 - 前端处理调用启动消息并显示接通的调用 UI - 收到调用时自动打开调用聊天框 - 只有调用者显示连接状态,直到调用者接受 - 已执行的接通 呼叫适当加入呼叫
为 WebRTC 网关集成添加 JanusService - 为与 Janus WebRTC 网关 API 互动而添加 JanusService Java 服务 - 在应用程序中配置 Janus API URL,秘密,以及 STUN/TURN 服务器. yml - 支持会话创建、插件附件和房间管理
将 EXTENSIVE 日志添加到 WebSocketConfig 和 ChatWebSocket 控制器 - 每个STOMP 框架、握手、订阅和信件登录
Add TomcatConnectorCustomizer to force SSL keystore config
- Spring Boot's application.yml SSL config not being applied - Use TomcatConnectorCustomizer to programmatically set keystore - Forces connector to use /etc/ssl...
Expose MediaService on port 8443 for WebSocket over HTTPS/HTTP1.1
- Added NodePort service on 8443 for direct WebSocket access (bypasses Traefik) - Mount wildcard-kamocrm-com SSL certificate - Init container converts PEM to PK...
Add CORS middleware to media-route for cross-origin WebSocket
- Added cors middleware to allow cross-origin connections - Enables WebSocket connections from internal.* to media.* - Allows all origins, methods, and headers ...
Add WebSocket signaling for peer-to-peer calls
- Added WebRTCSignalingController for call signaling - Handles offer/answer exchange via STOMP - Forwards ICE candidates between peers - Manages call hangup not...
Add Janus WebRTC integration
- Added WebRTCController for token generation and call management - Configured Janus API URL and secrets (api, token, admin) - Configured STUN/TURN servers (kam...
