Tolak silang -org agen penjualan; pengecekan bootstrap lebar
salesman AgentId didesak dari tubuh permintaan tidak diperiksa, sehingga cross- org atau Menggantung id agen dapat disimpan pada WebChatIntegration. Ini hanya g...
Termasuk anggota bukan AKTIF dari partisipasi percakapan & routing
Sebuah anggota non-ACTIVE * * * * * * * * * * * * * * * anggota tidak harus muncul sebagai, atau menjadi ditargetkan sebagai, peserta live chat. Gate setiap jal...
Resolve public-chat anggota sistem per-org (drop kasar snadjaminia alias)
create Supportment, createPublicTicket, dan pemberitahuan pemilik pembantu semua diselesaikan org "sistem anggota" melalui hardcode nama Alias = "snadjaminia" l...
Berhenti memasukkan isi pesan ke dalam email pesan yang hilang
Hapus komputasi pratinjau pesan, buku besar PREVIEW menulis, dan variabel template pratilik pesan; tinggalkan preferensi includePreview. Email sekarang membawa ...
Persist penjadwalan-material thumb flags via target update
Detached-entitas isu emoval sebagai pipeline konversi: menyapu tanpa kepala mengadakan ImgDat dan menyimpan () / merge () terpisah ke dalam koleksi gambar. Guna...
Lipat upload rekaman sehingga Kompiles MediaService
MinIOStorageService.upload melemparkan Eksepsi yang diperiksa bahwa menelan () baik tertangkap atau dinyatakan - membangun istirahat di atas memperbaiki isGuest...
MeetingParticipant.isGuest () (adalah getGuest, tidak akan kompile); repoint translate ke titik akhir umum
MeetingParticiant exposes is Guest () (primitif getter boolean), bukan getGuest (). Juga arahkan ringkasan transkripsi panggilan di shared / api / conversion / ...
Persist mengundang partisipan, instance manvage _ MEET _ SETTINGS, drop double- invite path
- Pertemuan penciptaan: anggota yang diundang adalah ID numerik kepingan salju, bukan string UUID - rute mereka melalui LongTouUID seperti pencipta. Sebelumnya ...
Gunakan cluster MinIO layanan DNS; drop tak berlaku lagi WireGuard / CGNAT IP dan pensiunan k2m1 / k0m1
Publikasikan acara NAS CREATE setelah transaksi berkomitmen untuk memperbaiki perlombaan lampiran gambar
Pesan NATS diterbitkan di dalam tubuh @ Transaksional, yang berarti penerima dapat menerima acara CREATE dan meminta gambar melalui / imaging / proxy / {objImgI...
Serialize attachments in WS relay and message history; allow attachment-only sends
Three bugs fixed: 1. ChatSessionSubscriptionManager was building the STOMP messageMap manually and omitting attachments, sourceLanguageId, readMemberId, msg...
Fix NPE in getChatSessions from Map.of() rejecting null nextcoder
java.util.Map.of() throws NullPointerException when nextcoder is null (no more pages). Replace with HashMap that accepts null values. Also wrap entire handler i...
Fix upload 500 (missing EmbRecordState) and empty chats tab (Timestamp cast)
Defect A: ChatAttachmentService.upload omitted **************** causing a NOT NULL violation on imgs.is_active. Added the default recordState. Also hardened Cha...
Prefer usernameAlias over User.name in memberDisplayName
Switches display name priority to: Member.usernameAlias → User.name → User.alias → User.username. Also includes the paged query dispatch fix from the previous c...
Use split First/After queries for chat sessions paged endpoint
Addresses empty Chats tab by dispatching to ****************
Raise client read timeout to 120s for long messages
LibreTranslate runs CPU-only argos models — a paragraph-length chat message takes 20-30s to translate, and longer ones can push past 60s. The 8-second read time...
Lacak percakapan dukungan publik dengan GUID sesi di Redis
Pemasaran pengunjung menggunakan / ws / public -chat-native tanpa memberId; tiket masih referensi anggota placeholder org sebagai permintaan. Incremen PRESENCE ...
Meningkatkan TTL dari 90-an sampai 300s untuk mencegah OCLINE salah pada pemintalan tab
Pemindaian repositori Expand JPA untuk memasukkan paket perdagangan
Kamo- shared- perpustakaan baru membawa dalam * * * * * * * * * * * * * * * * * yang membutuhkan * * * * * * * * * * * * * * * (dalam com.kamo.z.shared.commerce...
Kembalikan impor HashMap dalam ChatWebSocketController
Reaktor sebelumnya menghapus impor HashMap tapi handleTyping metode masih membangun sebuah HashMap untuk muatan peristiwa mengetik, menyebabkan Forgejo build un...
Proaktif membuat konsumen NAS pada pembuatan sesi untuk mencegah hilangnya pesan
Sebelumnya NATS JetStream mendorong konsumen hanya dibuat ketika klien STOMP dikirim / app / chat / berlangganan. Dengan DeliverPolicy. Baru, ada pesan yang dit...
Relay isi tema dari inti NATS
Match SecurityService core publish: berlangganan dengan Dispatcher on Security.theme.provision. * daripada JetStream (stream hanya mencakup percakapan).
Gunakan PublicChatVisitor displaName untuk permintaan Nama pada tiket pengunjung
Visitor- menyalakan tiket permintaan kode keras ke anggota sistem org, jadi DTO menghadap pemilik org dalam kolom Permintaan. Jatuh kembali ke PublicChatVisitor...
Bangun kesalahan di GeoLookupService dan tambahkan NATS mempublikasikan untuk pesan agen
- Tipe Fix Opsional vs List tidak cocok dalam * * * * * * * * * * * * * - Suntikkan Layanan Pesan NatsMessageService ke dalam MediController - Publikasikan ke c...
Real-time chat delivery, message sides, notifications, and name sync
- Keep NATS subscription alive on client unsubscribe to avoid breaking agent real-time delivery - Tag visitor messages with messageType=VISITOR_MESSAGE in getMe...
Tandai pesan pengunjung sebagai tipe VISITOR _ MESSAGE, tambahkan nama pengirim ke GET pesan
- PublicChatService: set messageType = VISITOR _ MESSAGE sehingga antarmuka dapat membedakan pengunjung gema dari agen menanggapi topik StoMP - MediaController....
Three support/chat issues — NATS relay, auto-popup, topic fallback
1. Switch SupportNotificationService and SupportStompRelayController from JetStream to core NATS — the CHAT_MESSAGES stream only covers chat.> so JetStrea...
Write contact form description as chat message on public ticket creation
The description was only stored on the ticket entity and never appeared in the chat window. Added writeTextMessage() helper and call it after the system event s...
Add debug logging and robust rights parsing for webinar controller
Adds info/warn logging for session data and rights on POST /types to diagnose 403 errors. Also adds fallback parsing for rights stored as JSON strings in Redis ...
Resolve org theme backgrounds not appearing in meet virtual backgrounds
- Add domain-based theme URL resolution for internal K8s service-to-service calls - getPublicBackgrounds now accepts optional domain param to derive correct the...
Upload meet backgrounds to public MinIO bucket with hash-based naming
Was uploading to private 'imaging-meet-recordings' bucket via **************** which caused: - MinIO region mismatch errors on the primary node - Connection tim...
Return serialization-safe Maps instead of raw JPA entities in MeetConfigController
All config/background endpoints were returning raw JPA entities with @ManyToOne(fetch=LAZY) Organization references. Jackson failed to serialize the Hibernate p...
Remove duplicate endpoints from MeetController, add org-themes to MeetConfigController
MeetConfigController already handled config/background endpoints. The duplicate endpoints in MeetController caused ambiguous mapping. Added org-theme background...
Update health probes to HTTP port 80 to match new server config
Startup, readiness, and liveness probes were still pointing to port 8443 with HTTPS scheme, causing pod restart loops.
Switch MediaService to HTTP port 80 — TLS termination at Traefik
Internal cluster traffic doesn't need HTTPS. Traefik handles TLS for external clients. This aligns MediaService with all other services.
Send chat invites to correct WebSocket topic /topic/chat/incoming/{memberId}
Was publishing to /topic/chat/member/{id} but kamo-internal subscribes to /topic/chat/incoming/{id}. Also fixed Member entity field access **************** inst...
Tambahkan voip. > ke subyek arus NAS dan tangani IllegalStateException dalam VoipStompRelayController
Arus NAS hanya meliputi percakapan. > sehingga berlangganan ke voip. > Melemparkan IllegalStateException ([SUB-90007] Tidak ada aliran yang cocok. Ditambahkan v...
Simpan referensi langganan VoipStompRelayController dan tambahkan PreDestroy
Terima * * * dari param query untuk cross- subdomain WebSocket auth
Baca * * * ID dari? * * = parameter query pertama, jatuh kembali ke Cookie. Hal ini memungkinkan frontend pada proteal.kamocrom.com untuk mengotorisasi Koneksi ...
Handle stale NATS consumer binding with unique consumer retry
- Ekstrak handler pesan ke dalam metode createNatsMessageHandler () - Tambahkan ulang logika dengan nama konsumen unik ketika "Konsumer sudah terikat" error ter...
Route WebSocket melalui Traefik di port 443
- Service.yaml: perbaiki port 80 £8443 untuk mencocokkan pod yang sebenarnya mendengarkan port - Everssroute.yaml: gunakan skema https + port 8443 untuk backend...
Gunakan cluster- internal DNS untuk sambungan NAS
Ubah URL baku NAS dari IP Wire Guard (100.64.x.x) ke nats.kamo.svc.cluster.local untuk server lokal. Nodal jauh (K0m1, k2m1) tetap pada IP Wire Guard.
Buat pilihan sertifikat TLS dalam penyebaran MediaService
- Tambah opsional: true untuk wildcard -kamocrm-com volume rahasia - Update cert-converter init container untuk menangani sertifikat yang hilang dengan anggun
Tambahkan konfigurasi Buildx dengan konfigurasi registry yang tidak aman untuk menyelesaikan kesalahan 401 auth
Gunakan getUsernames Alias () daripada tidak ada getName () metode Anggota
Seperti apa yang Anda lihat pengiriman?
Semuanya tiba di ruang kerja Anda sendiri. Mulai dengan rencana gratis dan baca halaman ini lagi dalam sebulan.
