Nicht-ACTIVE-Mitglieder von Chat-Beteiligung & Routing ausschließen
Ein nicht-ACTIVE ************ Mitglied darf nicht erscheinen, wie, oder gezielt wie, ein Live-Chat-Teilnehmer. Gate jeden Chat-Pfad auf der Shared-lib *********...
Resolve Public-Chat-System Mitglied pro-Ort (Drop hardcoded snadjafinia alias)
Erstellen Sie UnterstützungSession, erstellen SiePublicTicket und die Benachrichtigung des Besitzers Helfer alle lösten das "Systemmitglied" der Org über einen ...
Hören Sie auf, Nachrichteninhalte in verpasste Nachrichten-E-Mails zu stecken
Entfernen Sie messagePreview-Berechnen, das Ledger PREVIEW schreiben, und die messagePreview Vorlagenvariable; drop the includePreview-Einstellung. E-Mails trag...
Beharrlich geplante Material-Daumen-Flagge über gezielte Aktualisierung
Dieselbe Loslösungs-Waisen-Removie-Problem als Konversions-Pipeline: der kopflose Sweep hielt eine abgelöste ImgDat und speichern()/merge() in die Bildersammlun...
Wrap-Aufnahme-Upload so MediaService kompiliert
MinIOStorageService.upload wirft eine geprüfte Ausnahme, die ingest() weder gefangen noch erklärt - Baupause auf der isGest fix. Wrap it und Rethrow als Runtime...
MeetingParticipant.isGuest() (war getGund, wird nicht kompilieren); Repoint-Transkription zu generischem Endpunkt
MeetingParticipant-Belarven isGuest() (primitive boolean getter), not getGuest(). weisen Sie auch auf den zusammenfassenden Transkriptaufruf auf den Shared /api...
Beharrliche eingeladene Teilnehmer, erzwingen MANAGE_MEET_SETTINGS, Drop Double-invite Pfad
- erstellenMeting: eingeladene Mitglieder sind numerische Schneeflocken-IDs, nicht UUID Strings Route sie durch longToUUID wie der Schöpfer. Zuvor UUID.fromSt...
Verwenden Sie Cluster MinIO Service DNS; Drop deprecated WireGuard/CGNAT IPs und pensionierte k2m1/k0m1
NATS CREATE Event nach Transaktions-Verpflichtung veröffentlichen, um Image-Anhängerennen zu beheben
Die NATS-Nachricht wurde im Inneren des @Transactional Body veröffentlicht, was bedeutete Empfänger könnten das CREATE-Ereignis erhalten und das Bild über /imag...
Serialisieren Sie Anhänge in WS-Relais und Nachrichtenverlauf; erlauben Sie nur Anhängesendungen
Drei Fehler behoben: 1. ChatSessionSubscriptionManager baute die STOMP messageMap manuell und Anhänge weglassen, sourceLanguageId, readMemberId, msgIdLastVi...
Beheben Sie NPE in getChatSessions von Map.of() ablehnen null nextcoder
java.util.Map.of() wirft NullPointerException, wenn nextcoder ist null (keine Seiten mehr). Ersetzen Sie mit HashMap, die Null-Werte akzeptiert. Auch wickeln Si...
Fix Upload 500 (missing EmbRecordState) und leere Chats Registerkarte (Timestempel-Besetzung)
Defekt A: ChatAttachmentService.upload weggelassen ************ verursacht eine NOT NULL Verletzung auf imgs.is_active. Der Standard-RepState wurde hinzugefügt....
BenutzernameAlias über User.name in memberDisplayName
Schaltet die Namepriorität an: Member.usernameAlias . User.name . User. Enthaltet auch den Paged-Qury-Depesch-Fix von der vorherigen Commit.
Verwenden Sie split Erste/Nach-Abfragen für Chat-Sessions Seited-Endpunkt
Adressen leere Chats Registerkarte durch Versand an ************
Erhöhen Client lesen Timeout zu 120s für lange Nachrichten
LibreTranslate betreibt CPU-only argos Modelle - eine Absatz-Länge Chat-Nachricht braucht 20-30s zu übersetzen, und längere können über 60er schieben. Die 8-Sek...
Verfolgen Sie öffentlichen Support-Chat von Session GUID in Redis
Marketing-Besucher nutzen /ws/public-chat-native ohne MitgliedId; Tickets noch verweisen auf das org-Panzer-Mitglied als Antragsteller. Increment PRESENCE_PUBLI...
Erhöhen Sie TTL von 90ern auf 300er, um falsche OFFLINE bei der Tab-Tedrängelung zu verhindern
JPA-Repository-Scan erweitern, um Commerce-Paket enthalten
Die neue Kamo-Shad-Bibliothek bringt ************ in die **************** erfordert (in com.kamo.z.shared.commerce). MediaService nur gescannt donotmodify.dao.r...
HashMap-Import in ChatWebSocketController wiederherstellen
Der vorherige Refaktor entfernte den HashMap-Import, aber das handleTyping Methode konstruiert immer noch eine HashMap für die Eingabe-Event-Nage-Nage-Nage-Nage...
Erstellen Sie NATS-Konsument bei der Erstellung von Sitzungen, um Nachrichtenverlust zu verhindern
Zuvor wurde der NATS JetStream Push Consumer nur erstellt, wenn ein STOMP-Client gesendet /app/chat/subscribe. Mit DeliverPolicy.New, alle Nachrichten veröffent...
Relay-Themenvorsorge aus Kern NATS
Match SecurityService Kern veröffentlichen: Abonnieren Sie mit Dispatcher auf security.theme.provision.* anstelle von JetStream (Stream-Cover nur Chat).
Verwenden Sie PublicChatVisitor displayName für requestorName auf Besuchertickets
Visitor-eitiierte Tickets Hardcode-Anfragen an das org-System-Mitglied, so Die DTO hat den Namen des org-Besitzers in der Spalte Requestor aufgeschlagen. Herbst...
Fehler in GeoLookupService bauen und NATS für Agentenmeldungen veröffentlichen
- Optional vs List Typ Mismatch in ************ - NatsMessageService in MediaController injizieren - Publish to chat.session.{guid] nach Agent erstellt eine Nac...
Echtzeit-Chat-Lieferung, Nachrichtenseiten, Benachrichtigungen und Namenssynchronisation
- Halten Sie NATS-Abonnement am Leben auf Client Abmelden zu vermeiden, Broker Echtzeit-Lieferung - Besuchernachrichten mit messageType=VISITOR_MESSAGE in getMe...
Tag Besuchernachrichten als VISITOR_MESSAGE Typ, fügen Sie senderName zu GET-Nachrichten hinzu
- PublicChatService: set messageType=VISITOR_MESSAGE so Frontend unterscheiden kann Besucher hallt von Agenten-Antworten zum Thema STOMP - MediaController.get...
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...
Fügen Sie voip. zu NATS-Stream-Themen hinzu und behandeln Sie IllegalStateException in VoipStompRelayController
Der NATS-Stream nur abgedeckt Chat., so abonnieren voip. IllegalStateException ([SUB-90007] Keine passenden Streams). Zusätzliche voip. zu den Strompersonen, so...
VoipStompRelayController Abonnement-Referenz einbehalten und PreDestroy hinzufügen
Nehmen Sie *** von query param für Cross-Subdomain WebSocket auth
Lesen Sie *** ID von ?***= Abfrageparameter zuerst, zurückfallen auf Cookie. Dies ermöglicht das Frontend auf intern.kamocrm.com zu authentifizieren WebSocket V...
Abgestandene NATS-Verbraucherbindung mit einzigartigem Verbraucher-Reprot
- Extraktion Message Handler in createNatsMessageHandler() Methode - Wieder versuchen Logik mit eindeutigem Verbrauchernamen hinzufügen, wenn "Verbraucher berei...
Route WebSocket durch Traefik auf Port 443
- service.yaml: fix Port 80-8443 zum eigentlichen Listenport von pod - ingressroute.yaml: Verwendungsschema https + Port 8443 für Backend - serverstransport.yam...
Cluster-interne DNS für NATS-Verbindung verwenden
Änderung der voreingestellten NATS URL von WireGuard IPs (100.64.x) auf nats.kamo.svc.cluster.local für den lokalen Server. Remote-Knoten (k0m1, k2m1) bleiben a...
TLS Zertifikat optional machen bei MediaService Bereitstellung
- Optional hinzufügen: getreu Wildcard-kamocrm-com geheimes Volumen - Aktualisieren von Zertifikat init Container, um fehlendes Zertifikat anmutig zu behandeln
Buildx-Setup mit unsicherer Registry-Konfiguration hinzufügen, um 401 auth-Fehler zu beheben
Verbesserung der Anrufeinführung von Nachrichten und Mitglieder-Nachahmung - Ausreichend Protokollierung für Anrufeinweihungsnachrichten hinzufügen - Die Suchelogik von MediaSessionMitglieder simplifizieren - getSessionId() Fehler in der Erstellung von Janus-Sesionssitzungen beheben
Verwenden Sie getUsernameAlias() anstelle der nicht existierenden Methode getName() auf Member
Fügen Sie Janus-API-Geheimnisse als Umgebungsvariablen bei der Bereitstellung hinzu - JANUS_API_SECRET, JANUS_TOKEN_SECRET und JANUS_ADMIN_SECRET env vars hinzufügen - Sichert, dass Geheimnisse über Umgebungsvariablen zusätzlich zur Konfigurationskarte verfügbar sind
Fügen Sie apiSecret zu WebRTC Konfigurationsantwort für Janus Authentifizierung hinzu
Wie, was Sie sehen Versand?
Alles kommt in Ihrem Arbeitsbereich für sich. Starten Sie mit dem kostenlosen Plan und lesen Sie diese Seite in einem Monat wieder.
