Exclure les membres non-ACTIVE de la participation au chat et du routage
Un membre non-ACTIVE ne doit pas apparaître comme, ou être C'est-à-dire un participant au chat en direct. Passer tous les chemins de discussion sur le partage-l...
Résoudre le membre du système de chat public par or (goutte l'alias de snadjafinia à codé en caractères-pour-pied)
createSupportSession, créerPublicTicket, et la notification du propriétaire les assistants ont résolu le "membre du système" de l'organisation via un code dur l...
Arrêtez de mettre du contenu de message dans les e-mails à messages manqués
Supprimer le messagePreview computation, l'écriture du grand livre PREVIEW, et le messagePreview template variable; abandonnez la préférence includePreview. Les...
Persister les drapeaux de pouce matériel programmés grâce à une mise à jour ciblée
Même issue d'une orpheline d'entité détachée en tant que pipeline de conversion: le balayage sans tête tenue un ImgDat détaché et sauvez()/merge()() en casse da...
Enregistrement de téléchargement de l'enregistrement de sorte que MediaService compile
MinIOStorageService.upload lance une exception vérifiée qui ingest() ni attrapé ou déclaré - bêcher de construire sur le dessus de la solution isGuest. Enroulez...
MeetingParticipant.isGuest() (a été getGuest, ne compilera pas); repointre transcribe au critère générique
MeetingParticipant expose isGuest() (primitive boolean getter), pas getGuest(). Pointez également le résumé de l'appel de transcription sur la communication /ap...
Persister invités participants, appliquer MANAGE-MEET-SETTINGS, abandonnez la voie à double invitation
- createMeeting: les membres invités sont des identifiants numériques de flocons de neige, pas des chaînes UUID les acheminer à travers les longs TOUUID comme...
Utiliser le cluster MinIO service DNS; chute dépréciée WireGuard/CGNAT IPs et retraité k2m1/k0m1
Publier l'événement NATS CREATE après l'engagement de la transaction pour corriger la course de fixation de l'image
Le message NATS a été publié à l'intérieur de l'organe transactionnel, ce qui signifie que les bénéficiaires pourraient recevoir l'événement CREATE et demander ...
Sérialisation des pièces jointes dans le relais WS et l'historique des messages; autoriser les envois de connexion uniquement
Trois bugs fixés: 1. ChatSessionAbondien était en train de construire le message STOMPMap manuellement et omettant les pièces jointes, sourceLanguageId, rea...
Correction de NPE dans getChatSessions de Map.of() rejetant null nextcoder
java.util.Map.of() lance NullPointerException lorsque le prochain code est nul (pas plus de pages). Remplacer par HashMap qui accepte des valeurs nulles. Envelo...
Fixer le téléchargement 500 (EmbRecordState manquant) et l'onglet "chat" (position de Timestamp)
Défaut A: ChatAttachmentService.upload omis provoquant une violation NOT NULL sur imgs.is-active. Ajout de l'enregistrement par défaut. Chat complètement renfor...
Préférer le nom d'utilisateurAlias sur User.name dans memberDisplayName
Interrupt la priorité d'affichage du nom vers: Member.usernameAlias 'Utilisateur.name 'User.alias 'User.username'. Inclut également le correctif d'envoi de la r...
Utiliser les requêtes First/After pour le point d'extrémité paged des sessions de discussion
Adresses vides de l'onglet Chats en expéditeurs
Levé le temps de lecture du client aux 120 s pour les messages longs
LibreTranslate exécute des modèles d'argos uniquement CPU et un message de discussion sur la longueur du paragraphe Il faut 20 à 30 secondes pour traduire, et l...
Suivre le soutien public par la session GUID à Redis
Utiliser les visiteurs en commercialisation /ws/public-chat-native sans memberId; billets encore référencer le membre de l'org-titre en tant que demandeur. PRES...
Augmenter TTL des années 90 à 300 pour éviter les faux OFFLINE lors de l'étranglement de la languette
Étendre l'analyse du référentiel JPA pour y inclure le module de commerce
La nouvelle bibliothèque kamo-shared introduit qui nécessite (dans le com.kamo.z.shared.commerce). MediaService n'a scanné que donotmodify.dao.repos, de sorte q...
Restaurer l'importation de HashMap dans ChatWebSocketCutteur
Le réfactoracteur précédent a supprimé l'importation de HashMap mais la manipulationTypage Une méthode continue de construire une HashMap pour la charge utile d...
Créer de manière proactive le consommateur NATS lors de la création de session pour éviter la perte de messages
Auparavant, le consommateur de poussée NATS JetStream n'était créé que lorsqu'un client STOMP envoyé /app/chat/s'abonner. Avec DeliverPolicy.Nouveau, tous les m...
Disposition thématique relais de la NATS de base
Match SecurityService de base publie: abonnez-vous à Dispatcher on Security.theme. provision.
Utiliser PublicChatVisitor displayNom pour requestorName sur les billets pour les visiteurs
Demandeur de code-du dur à l'organe de l'org, donc le DTO faisait surface sur le nom du propriétaire de l'organisation dans la colonne Demandeur. Chute Retour a...
Intégréer dans GeoLookupService et ajouter NATS publish pour les messages d'agents
- Réparation de l'inadéquation optionnelle ou du type de liste - Injecter NatsMessageService dans MediaController - Publier sur chat.session. l'agent et le vi...
Livraison en temps réel du chat, aspects du message, notifications et synchronisation des noms
- Maintenir l'abonnement NATS en vie chez le client se désabonner pour éviter la rupture de l'agent en temps réel - Marquez les messages de visiteur avec messag...
Tag les messages de visiteurs en tant que type de VISITOR-MESSAGE, ajouter ernderName to GET messages
- PublicChatService: paramétrer le messageType-VISITOR-MESSAGE pour que frontend puisse distinguer échos des visiteurs provenant des réponses des agents sur l...
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...
Ajouter voip à NATS stream sujets et traiter IllegalStateException dans VoipStompRelayContrôleur
Le flux NATS ne couvrait que le chat. ' donc abonnant à voip. Illegal StateException ([SUB-90007) Pas de flux correspondants). Ajout de voip. aux sujets de flux...
Maintenir VoipStompRelayRelayAbonnement du contrôleur et ajouter PreDestroy
Accepter le paragraphe de l'adresse de l'internaute param pour le sous-marin WebSocket auth
Lire d'abord le paramètre d'interrogation à partir de l'identifiant de l'identifiant, retomber à cookie. Cela permet au frontend sur internal.kamocrm.com d'auth...
Fixation de consommateur NATS rassis avec un réessai unique pour le consommateur
- Élément de traitement de message dans la méthode createNatsMessageHandler() - Ajouter une logique d'essai avec un nom de consommateur unique lorsque "Consomma...
Route WebSocket via Traefik sur le port 443
- service.yaml: port de fixation 80-8443 pour correspondre au port d'écoute réel de la pod pod - ingressroute.yaml: schéma d'utilisation https et port 8443 pour...
Utiliser un DNS interne de cluster pour la connexion NATS
Changer l'URL NATS par défaut à partir des IP WireGuard (100.64.x.x) à nats.kamo.svc.cluster.local pour le serveur local. Noeuds distants (k0m1, k2m1) reste sur...
Rendre le certificat TLS facultatif dans le déploiement de MediaService
- Ajouter facultatif: fidèle au volume secret wildcard-kamocrm-com - Mettre à jour le convertisseur de cert-convertisseur init pour gérer gracieusement le certi...
Ajouter la configuration de Buildx avec la configuration de registre non sécurisée pour résoudre les erreurs 401 auth
Améliorer le traitement des messages d'initiation aux appels et la recherche des membres - Ajouter une diagraphie complète pour les messages d'initiation d'appel - Simplifier MediaSession Logiciel de recherche de la logique de recherche - Fix getSessionId() erreur dans la création de session de Janus
Utiliser getUsernameAlias() au lieu de la méthode getName() inexistante sur le membre
Ajouter apiSecret à la réponse de configuration WebRTC pour l'authentification Janus
Comme ce que tu vois expédier ?
Tout cela arrive dans votre espace de travail par lui-même. Commencez sur le plan gratuit et relisez cette page dans un mois.
