Machen WebRTC config überleben pod Neustart
Der vorherige Ansatz (http_custom.conf mit [allgemeinem] Override) nicht tatsächlich wirksam, weil Asterisk INI Parser nicht ehre mehrere [allgemeine] Abschnitt...
Asterisk integrierten HTTP-Server auf :8089 für WebRTC /ws
Ein chan_pjsip-Transport fährt auf res_http_websocket, die wiederum benötigt, dass der eingebaute HTTP-Server von Asterisk läuft. Die Standard FreePBX 17 instal...
Priorisieren Sie echten Vor-/Nachnamen vor BenutzernameAlias für Anzeige
usernameAlias ist funktional ein Login-Handle (oft gleich Benutzername), nicht ein Display-Name. Echte menschenlesbare Namen leben auf User.name (EmbNameFull). ...
Scope Fügen Sie Lead-Rolle und Fußgänger in den Inhaltsbereich
Das Formular wurde mit minHeight: 100vh in einem Elternteil, das ist bereits calc(100vh - 56px), der eine äußere Scrollleiste erzwingt, auch wenn der Inhalt pas...
Intelligentes Multi-Spalten-Layout für Lead-Formular hinzufügen
Restrukturieren Sie die Seite in ein Top-Level-Raster so Abschnitte horizontal zusammensetzen statt der Dehnung einzelner Felder: - Markt & Zuordnung verwendet...
Verwenden Sie /api/security/members/names für die Namensauflösung vongeordneten Mitgliedern
Die by-department-Endpunkt-Filter nur für aktive Teammitglieder, fehlen Zuweisungen an Mitglieder oder inaktive Mitglieder zu gründen. Wechseln Sie zu /names, k...
Vollbreite Leitungsform und Freigabe für klebrige Fußgänger hinzufügen
Lassen Sie die 1200px max-Breite auf /bles/neu, so dass die Form überspannt den Seitenbereich, und Bump Bottom Polsterung, so dass die klebrige Aktionsleiste ni...
Display-Name mit der richtigen Priorität im by-department endpoint
Priorität: member.usernameAlias - user.name.formatFull() - user.alias . user.username
Hinzufügen fehlendes istDisplayOnIntake-Feld zu FormField-Schnittstelle und neue Feld-literal
Verwenden Sie String-Typ für zugewiesenMemberId, um Präzisionsverlust zu verhindern
Serialisieren Sie Long als String, um JS-Präzisionsverlust auf großen CockroachDB-IDs zu verhindern
ATF-Karte vollständig aussperren, wenn alle Felder durch aufgetragene Modelle gesperrt sind
Probe Master-Modell Endpunkt und fix angewendetModell org ID
- Ersetzen Sie angewendetesModell.source-basiertes Gate mit einer direkten Sonde von /api/security/master-Modell auf Mount; r.ok=false (409) bedeutet die org ...
Gate Zensur Tab Optionen durch angewandte Modell Einschränkungen
- Hide EDIT MASTER MODEL-Taste, wenn org durch einen Zweigtyp geregelt wird (AnwendengemitteltModel.source anstelle von unzuverlässigen Org context branchType...
Mark-as-Lese und Nachrichten-Steigerung für gemeinsame/Mitglieder-Postfächer
Klassischer Modus lädt jetzt geteilte Mailbox-Nachrichten über die richtige /messages/{folder] Endpunkt (rief die nicht existierenden /Konversationen auf Endpun...
Mark-as-read für gemeinsame und Mitglieder-Postfächer
EmailController.setFlags akzeptiert jetzt eine optionale MailboxId Abfrage param und Routen durch resolveProviderWithMailbox, so dass Mitglieds-Mailbox-Flaggen ...
Verwenden Sie extensionId als externe ID, nicht Relay-Node
FreePBX liefert die gleiche Relay-ID (ZXh0ZW5zaW9uOg== = "extension:") für jede Erweiterung, weil das ID-Feld nicht bevölkert ist. Mit ihm verursachte alle Erwe...
Behandeln Sie IMAPInputStream in getMessage, um ClassCastException zu verhindern
JavaMail kann einen IMAPInputStream anstelle eines dekodierten Strings von part.getContent(), wenn der Inhalt der Nachrichten nicht vorab abgerufen wurde. Die d...
Erhöhen Sie TTL von 90ern auf 300er, um falsche OFFLINE bei der Tab-Tedrängelung zu verhindern
Rewrite all GQL Abfragen/Mutationen gegen Live-Schema-Introspektion
Verifizierte jeden Feldnamen und Typ gegen das eigentliche FreePBX 17 Schema. Vollständige Reihe von Korrekturen: Anfragen: - fetchAllExtensions: Entfernen Sie...
Passe ausgewähltFolder an ThreadDetailAn so email:folder-changed fires with a valide folder
conversation.folder ist immer undefiniert, weil die Java ConversationEntity hat OrdnerIds (text[]) und kein Ordner-String-Feld. Dies führte zu loadThread zu ruf...
Korrigieren GraphQL Feldnamen zu holenAsteriskDetails
FreePBX API gibt "Hat du damit gemeint fetchAsteriskDetails?" Prüfen Sie die Abfrage und den Datenpfad-Zugangsoder entsprechend.
XHR/Accept-Header und String Response Parsing zum GraphQL-Client hinzufügen
Gleiches Muster wie FreePBXTokenCache: X-Requested-With + Accept: application/json hinzufügen um die HTML-Redirect-Antworten von FreePBX zu unterdrücken und all...
Synchronisieren Sie Mailbox Dropdown zu primären Mailbox auf Last
Dropdown standardmäßig auf die erste Liste Element, weil ausgewählteMailbox initialisiert ohne MailboxId, wodurch aktuelles Value sich entschließt, 'persönlich'...
Größe der Datei auf 500MB erhöhen
Spring Boot standardmäßige Cap mehrteilige Teile bei 1MB, was zu Hintergrundbild führt Uploads zum Scheitern mit 500 in request.getParts(). Match SecurityServic...
Oberfläche HTTP-Fehler, so dass Upload-Fehler sichtbar sind
Ersetzen leise console.warn mit einem geworfenen Fehler auf Nicht-OK-Status, damit der Benutzer den eigentlichen Ausfallgrund sieht (Status + Response Body) ans...
Accept+XHR-Header und Roh-String-Reseping-Paring für Token-Endpunkt hinzufügen
FreePBX gab Text/html zurück, wenn es über Cluster DNS aufgerufen wurde, weil Host-Header passte nicht mit der konfigurierten PBX_HOSTNAME. Hinzufügen Akzeptier...
Fahren minimiert-tab Eintrag durch Animationssteuerungen
Ein Wechsel von animate={...- zu animate={tabControls' brach den Eintrag Animation: tabControls hat kein Warteschlange-Ziel auf der Halterung, so dass die Taste...
Korrekte OAuth2-Leistichumfangs-Strings für FreePBX API
FreePBX-Ferner sind Top-Level-Identifier: 'gql' (alle GraphQL) und 'Ruhe' (alle REST). Das Format 'gql:read' bedeutet GQL für ein Modul mit dem Namen 'read', da...
Port 8088 direkt auf ClusterIP-Dienst auszusetzen
Service hatte nur Port 80 bis 8088 Mapping. Interne Dienstleistungen in Anspruch nehmen ************ (z.B. VOIPService API Token Anfragen) waren Timing aus, wei...
Trust Backend anhängigCount, Drop Client-Offsets
Backend pendingCount ist jetzt ungelesener (zählt SUPPORT_TICKET-Sitzungen mit Nachrichten, die neuer sind als die letzten Anzeigen des Besitzers). Wenn der Age...
Vermisste fail2ban-config ConfigMap für k1m1 hinzufügen
Einsatzreferenzen fail2ban-config ConfigMap (jail.local + asterisk-security.conf) aber es existierte nicht, blockiert die Hülse an MountVolume.SetUp und das Ver...
MarkAsRead nach Agent senden so lastViewed Vorauss
Auf Support-Tickets werden sowohl Besucher- als auch Agenten-Nachrichten unter der gespeichert. gleiches Systemmitglied, so dass die ungelesene Zählabfrage Memb...
Support-Tickets benötigen Mitglieder-agnostische ungelesene Zählungen
Besuchermeldungen auf Support-Tickets werden unter demselben System gespeichertMitglieder dass der Agent authentifiziert, so dass die bestehende CHAT-Session un...
Pass-Ordner zum Laden vonThread-Retry-Button
loadThread takes (threadId, Ordner); nur der Fehler-State-Retry-Button übergeben ThreadId, brechen die kamo-internen Build. Passen Sie den Aufruf an die Signatu...
Korrigieren JsonIdentityInfo Eigenschaft von 'uniqueId' zu 'id'
Mitgliedsunternehmen erklärt @JsonIdentityInfo(Eigentum = "uniqueId") aber die das tatsächliche Primärschlüsselfeld wird 'id' genannt. Jackson geworfen "kann ke...
Entfernen SSR Wache verursacht Hydratation Mismatch; Drop SockJS für native WebSocket
- Hero.tsx: Entfernen Sie Typ-Fenster-Check um ParticleField bereits hat ssr:false, so dass der Wächter ein Server/Client-Baum-Mischung produziert hat (Reagie...
Klare ungelesene Indikatoren, wenn Konversation geöffnet wird
ThreadDetailView sendet jetzt E-Mail:folder-changed after markConversationRead ist so MailButton renoviert die nvtop Inbox-Plakette zählen. ConversationListView...
CORS zu Traefik über Kamo-Middlewares bewegen, In-App entfernen
Die CorsFilter @Bean in der Frühjahrs-App war still nicht Anwendung Header nach WebConfig.java wurde entfernt. CORS wird nun vollständig an der Traefik-Schicht ...
Verwenden /public/{mainDomain"-{tld" Pfad passend zum tatsächlichen MinIO-Eimer-Layout
Der getThemePath() erzeugte /domain/{tld'/{split'/kamosite Pfade, nicht in MinIO existieren - Themendateien live in der Öffentlichkeit Eimer unter kamocrm-com/,...
Break min-w-0-Kette, um E-Mail-Scroll in Körperspalte enthalten
Fügen Sie min-w-0 zu äußeren Behälter und Hauptinhalt flex div so flex Kinder kann nicht auf E-Mail-Min-Content-Breite erweitern, was die Seite-weite verursacht...
Hoist Anbieter über ToolProviders
Die gleiche Ursache wie der ChatWebSocketProvider Hebeer: SupportTicketWindow Anrufe ************ und ChatBox-Anrufe useUnread().markAsRead(), aber beide Werkze...
Hinzufügen von unterdrückenHydrationWarning und reparieren defekte Platzhalter-Bilder
suppressHydrationWarnung auf <html" verhindert React-Fehler #418 durch Browser verursacht Erweiterungen (z.B. übersetzen, dunkler Modus) mutierende html-Attribu...
Lassen /domain/ Pfad-Präfix auf Thema IngressRoute für CORS
Das Thema Konfiguration unter theme.kamocrm.com/domain/... wurde nicht von der bestehende Streckenregeln (nur / öffentlich/ und /intern/ erlaubt), also Traefik ...
Entfernen Sie doppelte CorsFilter und Streifen upstream CORS-Header im Gateway
WebConfig.java definierte eine zweite CorsFilter-Beine, die mit CorsConfig.javas konkurrierte Bohnen, riskieren doppelte Header schreibt. Gelöscht es, so dass n...
Entfernen Sie Duplikat CorsFilter-Beine verursacht doppelte Access-Control-Allow-Origin-Header
Die explizite CorsFilter-Bohne verursachte neben Spring einen zweiten CORS-Filter Die integrierte CORS-Unterstützung von Security (die CorsConfigurationSource v...
Entfernen debug console.log-Anweisungen und fügen Sie fehlende Routen hinzu
Entfernen Sie alle temporären debug Logging hinzugefügt während WebSocket-Tracing aus ChatBox, TicketChat, MemberItem, ChatTool und nutzenChatWebSocket; hinzufü...
Verhindere Nachrichten-Header von Erweiterung Spalte auf langen Adressen
Das linke Flex-Kind des Headers hatte keine min-w-0, so lange unzerbrechliche E-Mail Adressen in From/To/Cc zwangen seine Min-Content-Breite zu wachsen, ziehend...
Hoist ChatWebSocketProvider über ToolProviders
ToolDock (und seine Werkzeugfenster wie SupportTicketWindow - TicketChat) ist eingemountet in ToolProviders, die ABOVE PresenceWrapper im Baum sitzt um das Abhä...
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.
