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 ...
Aktualisierung von Locale Übersetzungen und hash [überspringen ci]
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...
Aktive Mailbox in URL-Abfrageparams
Das Umschalten von Postfächern aktualisiert jetzt die URL (?mailboxId, ?mailboxId, ?mailbox) so aktualisieren Sie den Browser stellt die gleiche Mailbox. Messag...
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 ...
Genauer Provider-Verbindungsstatus von isConnected anzeigen
Erändert die alte Logik, die "Connected" für jeden Anbieter ohne Synchronisation zeigte Fehler (einschließlich brandneuer Anbieter, die nie getestet wurden). N...
Bestehendes Verbindungstestergebnis zu isConnected
- test() Endpoint saves isConnected=true/false to DB nach jedem Gesundheitscheck - update() Resets ist zum Nullen verbunden, wenn sich configJson ändert (Krehen...
Hinzufügen istConnected-Feld zu VoipProviderInstance
Nullable Boolean: null = nie getestet, true = letzte Prüfung bestanden, falsch = gescheitert. Erfordert KamoInitializerService Schemas Migration, um IS_CONNECTE...
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...
Aktives Angebot Banner mit Live-Millisekunden-Countdown anzeigen
holt sich die aktive Promotion-Server-Seite auf der Startseite und macht eine HeroOfferBanner zwischen der Unterzeile und dem Free-Forever Callout. Das Banner z...
Wire Verfügbar/Unverfügbare Schalter auf Backend und beheben OFFLINE Präsenz Bug
- Umbenennen Paused/Aktiv-Chip in NavTop verfügbar/Nichtverfügbarkeit - Erste Verfügbarkeit auf mount und persist toggles über neue me/verfügbarkeit API abrufen...
Erhöhen Sie TTL von 90ern auf 300er, um falsche OFFLINE bei der Tab-Tedrängelung zu verhindern
Hinzufügen istAntwort für die Abteilung und die Endpunkte für mich/verfügbarkeit
Hinzufügen ist verfügbares Feld für Mitgliederverfügbarkeit toggle
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...
Live ungelesene Abzeichen + Bounce auf neue Agenten-Nachricht
- Hält LiveSupportPanel aus dem Off montiert, während das Widget minimiert wird (nur wenn eine Support-Sitzung existiert), so dass das STOMP-Abonnement bleibt...
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...
Ausstrahlung anstehende Zählung + ungelesen auf Agent lesen & Besucher senden
- **************** jetzt delegiert ************ so zählen reflektiert Sitzungen mit ungelesenen Besuchermeldungen und Abnahmen, wenn die Agent ruft markAs...
Ungelesene Zählung + Lookup-by-Session-Hilfe
Fügt ************ so das navtop SupportButton-Abzeichen kann Support-Tickets zählen, die tatsächlich brauchen Aufmerksamkeit (ungelesene Besuchernachrichten) st...
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...
Rebuild zu ziehen neueste Kamo-Shared-Bibliothek
Abholung der neuen ************ Anfragen und die SUPPORT_TICKET Zweigstelle in ************
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...
Logging zum UploadBackground Endpunkt hinzufügen
Log org/index, Dateiinfos, userId, authene Entscheidungen und MinIO-Staging Schlüssel, um zu verfolgen, warum Hintergrund-Uploads nicht in Staging Bucket ersche...
Logging zur Upload-Background-Proxy-Route hinzufügen
Log org/index, Dateiname/Größe/Typ und upstream-Antwortstatus um zu diagnostizieren, warum Hintergrund-Uploads den APIService nicht erreichen.
Orts-Spalte zu Ticket Datagrid hinzufügen
Liest ************ direkt aus dem SupportTicketDTO (jetzt Schnappschüsse auf der Ticket-Entität zu Erstellungszeit - keine Extra-Rundreise). Renders Flagge + St...
Store Geo auf Ticket bei der Erstellung, Drop GeoLite liest
**************** fängt jetzt das Geo des Besuchers ein einmal (via GeoLookupService) und fortbesteht ip/country/city/subdivision on das SupportTicket selbst. S...
Snapshot Besucher Geo auf Ticket-Entität
VISITOR_IP_ADDRESS, VISITOR_COUNTRY_CODE, VISITOR_COUNTRY_NAME, VISITOR_CITY, VISITOR_SUBDIVISION Spalten. Gefangen bei der Ticket-Erstellung so die Liste/detai...
Bulk-Lot-Besucher und überspringen GeoLite Lookup in der Liste
Der Endpunkt /api/support/tickets list lief, pro Seite von 20 Zeilen: - 20 ************ Anrufe (N+1) - 20 Anrufe in GeoLookupService.lookup, von denen jeder...
findBySessionGuidIn für die Massenbelastung hinzufügen
Wird durch den Endpunkt der Support-Ticket-Liste, um alle Besucher für eine zu holen Seite in einer Abfrage anstelle von N separaten findBySessionGuid-Anrufen.
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...
Rebuild zu holen Mitglied JsonIdentityInfo fix von kamo-shared-Bibliothek
kamo-shared-Bibliothek b57d156 fixes @JsonIdentityInfo(Eigentum = "uniqueId") "id" auf Mitglied, Lösung von 400 Fehlern auf PUT /api/security/org/{id'.
Wie, was Sie sehen Versand?
Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.