Escludere i membri non ACTIVE dalla partecipazione alla chat & routing
Un membro non attivo deve apparire come un membro o essere mirato come, un partecipante live chat. Porta ogni percorso di chat sul condiviso-lib E' il momento g...
Creare WebChatIntegration() @Transactional (nessuna chiave orfana sul guasto dell'integrazione-salvata)
Risolvere membro del sistema pubblico-chat per-org (drop hardcoded snadjafinia alias)
creareSupportSession, crearePublicTicket, e la notifica del proprietario aiutanti tutti hanno risolto il "membro del sistema" dell'org tramite un codice nome ut...
Smettere di mettere i contenuti dei messaggi nelle e-mail di messaggio mancato
Rimuovere il messaggioPreview computation, il libro principale PREVIEW scrivere, e il messaggioAnteprima variabile del modello; rilasciare la preferenza include...
Persist bandiere di pollice programmate-materiale tramite aggiornamento mirato
Stesso indipendente-entity orfanoRemoval problema come il canale di conversione: la spazzata senza testa ha tenuto un ImgDat staccato e salvare()/merge() cascad...
Caricamento di registrazione in corso di elaborazione MediaService
MinIOStorageService.upload lancia un'eccezione controllata che ingerisce() nè catturato o dichiarato — costruire la rottura sulla parte superiore della isGuest ...
MeetingParticipant.isGuest() (è stato ottenutoGuest, non compila); ridefinisce il trascritto al generico endpoint
MeetingParticipant espone èGuest() (ottenimento booleano primitivo), non ottenereGuest(). Indirizzi anche la chiamata di trascrizione sommaria al /api/conversio...
Persist ha invitato i partecipanti, far rispettare MANAGE MEET SETTINGS, drop double-invite path
- createMeeting: i membri invitati sono numerici ID fiocchi di neve, non stringhe UUID — li instrada attraverso lungoToUID come il creatore. Precedente UUID. Fr...
Utilizzare il servizio MinIO cluster DNS; drop deprecated WireGuard/CGNAT IPs e k2m1/k0m1 in pensione
Pubblicare NATS CREATE evento dopo la transazione si impegna a risolvere la gara di allegato immagine
Il messaggio NATS è stato pubblicato all'interno del corpo @Transactional, che significava i destinatari potrebbero ricevere l'evento CREATE e richiedere l'imma...
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...
Traccia chat di supporto pubblico per sessione GUID in Redis
I visitatori di marketing utilizzano /ws/public-chat-native senza membroId; i biglietti ancora riferimento al titolare del posto org come richiestore. Increment...
Aumentare TTL da 90s a 300s per evitare il falso OFFLINE sulla scheda throttling
Espandi la scansione del repository JPA per includere il pacchetto di commercio
La nuova biblioteca di kamo-shared porta in mezzo a... che richiede Non e' vero. (in com.kamo.z.shared.commerce). MediaService solo scansionato donotmodify.dao....
Ripristinare l'importazione HashMap in ChatWebSocketController
Il refattore precedente ha rimosso l'importazione HashMap ma la manigliaTyping metodo ancora costruisce un HashMap per il payload dell'evento di digitazione, ca...
Proattivamente creare il consumatore NATS alla creazione di sessione per prevenire la perdita di messaggi
Precedentemente il consumatore di spinta NATS JetStream è stato creato solo quando un client STOMP inviato /app/chat/subscribe. Con DeliverPolicy. Nuovo, qualsi...
Fornitura a tema relè dal core NATS
Match SecurityService core pubblicare: abbonarsi a Dispatcher su sicurezza.theme.provision.* invece di JetStream (stream copre solo chat).
Utilizzare PublicChatVisitor displayName per requestorName sui biglietti dei visitatori
Biglietti d'ingresso per il membro del sistema org, così il DTO stava navigando il nome del proprietario dell'org nella colonna del richiedente. Caduta torna al...
Costruire errore in GeoLookupService e aggiungere NATS pubblicare per messaggi di agente
- Risolvere il tipo facoltativo contro l'elenco disinfettante in ***********************************************************************************************...
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...
Etichetta i messaggi dei visitatori come tipo VISITOR MESSAGE, aggiungi senderName ai messaggi GET
- PublicChatService: set messageType=VISITOR MESSAGE in modo che frontend possa distinguere echi visitatori dalle risposte degli agenti sull'argomento STOMP - M...
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...
Aggiungere voip.> ai soggetti di flusso NATS e gestire IllegalStateException in VoipStompRelayController
Il flusso NATS ha coperto solo la chat.> in modo da sottoscrivere a voip.> gettato IllegalStateException ([SUB-90007] Nessun flusso corrispondente). Aggiunto vo...
Recuperare VoipStompRelayController sottoscrizione di riferimento e aggiungere PreDestroy
Accettare *** da query param per cross-subdomain WebSocket auth
****** ID da ***= parametro query in primo luogo, cadendo indietro a cookie. Questo permette al frontend su internal.kamocrm.com di autenticare Collegamenti Web...
Maniglia stale NATS vincolante del consumatore con un'unica riprovazione del consumatore
- Estrarre il gestore del messaggio in creareNatsMessageHandler() metodo - Aggiungere la logica di retry con il nome di consumatore unico quando "Consumer già l...
Route WebSocket attraverso Traefik sul porto 443
- service.yaml: fissare la porta 80→8443 per abbinare la porta reale di ascolto di pod - ingressroute.yaml: schema di utilizzo https + porta 8443 per backend - ...
Utilizzare DNS interno cluster per la connessione NATS
Modificare l'URL NATS predefinito da WireGuard IPs (100.64.x.x) a nats.kamo.svc.cluster.local per il server locale. Nodi remoti (k0m1, k2m1) rimangono sugli IP ...
Fare il certificato TLS opzionale nella distribuzione MediaService
- Aggiungi facoltativo: vero a wildcard-kamocrm-com volume segreto - Aggiornare cert-converter init contenitore per gestire il certificato mancante con grazia
Aggiungi configurazione Buildx con configurazione del registro insicuro per risolvere errori 401 auth
Utilizzare getUsernameAlias() invece del metodo getName() inesistente
Aggiungi apiSecret alla risposta di configurazione WebRTC per l'autenticazione Janus
Come quello che vedi la spedizione?
Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.
