Verwenden Sie String-GesprächseId während SMS-Tool, um 64-Bit-IDs zu behandeln
Backend jetzt serialisiert Long as string; aktualisieren Sie alle KonversationId-Typen von der Nummer zu String zu entsprechen. Auch aktivieren Sie senden Taste...
Serialisieren Sie Long IDs als Strings, um JS-Präzisionsverlust zu verhindern
CockroachDB unique_rowid() erzeugt 64-Bit-Eingänge größer als Number.MAX_SAFE_INTEGER (2-53-1). JS JSON.parse schweigend um sie herum, verursachte Konversation ...
Entfernen Sie doppelte Zurück-Taste von RingCentralConfig
Parent PhoneProviderSetup macht bereits einen IconButton mit ArrowLeft in der Konfigurations-Ansicht-Header, so dass die Zurück-Taste innerhalb RingCentralConfi...
Zurück Zurück senden Sie die Karte von sendem Endpunkt, um LazyInitializationException zu verhindern
VoipMessage.conversation ist FetchType.LAZY; nach @Transactional Commits, Jackson Serialisierung der Entität würde LazyInitializationException werfen verursacht...
Zurückfallen auf org mainPhoneNumber, wenn das Mitglied keine VOIP-Konfigur hat
Mitglieder ohne eine individuelle MemberVoipConfig (oder keine von PhoneNumber-Set) jetzt verwenden Sie die org mainPhoneNumber von VoipProviderConfig als Outbo...
getJwtKey() von WebhookController nach OAuth Migration entfernen
Signature Validierung verwendet jwtKey als HMAC Geheimnis, das nicht mehr existiert auf VoipProviderConfig. Überspringen Validierung für jetzt im Einklang mit *...
OAuth Callback-Anleitung mit no-redirect RestTemplate hinzufügen
- NoRedirectRestTemplate Bean (HttpClient.Redirect.NEVER) hinzufügen, so dass die 302 von VOIPServices OAuth Callback wird an den Browser weitergeleitet ans...
Ersetzen Sie JWT-Konfiguration mit OAuth connect UI für RingCentral
- RingCentralConfig: OAuth Verbindungs-/Zerbinden-Taste mit Statusanzeige, Hauptnummernfeld, Testverbindung (nur bei Verbindung) - voipApi: getOAuthStatus, st...
Refactor RingCentral zu OAuth 2.0 Authorization Code flow
- Neue OAuthController: /oauth/start (returns authUrl), /oauth/callback (tauscht Code aus, speichert Token), /oauth/status, DELETE /oauth/token - OTKValidatio...
Erstellen KamoTokens Schema und org_oauth_token Tabelle
- CREATE SCHEMA IF NOT EXISTS kamotokens - CREATE TABLE kamotokens.org_oauth_token mit unique (org_id, Provider) - DROP COLUMN jwt_key von voip_provider_config ...
OrgOAuthToken-Einheit für OAuth 2.0 Token-Speicher hinzufügen
- OrgOAuthToken Entität in KamoTokens Schema hinzufügen (kamotokens.org_oauth_token) - OrgOAuthTokenRepository mit findByOrgIdAndProvider hinzufügen / löschenBy...
Equal-Höhe-Funktionskarten und Kazoo-bewusste Anbieterbeschreibungen
- Höhe setzen: 100% auf FeatureCard Motion Wrapper, so dass Karten in der gleichen Zeile passen die höchste Karte - Rekaktieren Sie KamoPBX-Beschreibung, um Kaz...
KamoCRM Promo Flyer HTML Vorlage und Puppeteer Generation Script hinzufügen
Verwenden Sie einfache img Tags für lokale SVG-Providerlogos
next/image dient nicht zuverlässig lokalen SVGs ohne unoptimiertes Flag. Einfache img-Tags laden /öffentliche Vermögenswerte direkt ohne Probleme.
SmsChatTab mit Suche hinzufügen, Emoji, Attach, Zeitstempel, schnelle Antworten
Entfernen Sie Client ID und geheime Felder von RingCentral UI
Dies sind Plattform-Level-Bescheinigungen, die einmal im K8s-Geheimn des K8-Geheimnisses gesetzt werden. Kunden müssen nur ihren JWT Key und die Hauptnummer anb...
Lesen Sie RingCentral client-id/secret von platform config, nicht per-org DB
Client-ID und Secret identifizieren die Kamo-App auf der RingCentral-Plattform sie werden über alle Orgs verteilt. Injizieren Sie sie von Spring Boot Eigenschaf...
ClientId/clientSecret von VoipProviderConfig entfernen
Dabei handelt es sich um Referenzen auf Plattformebene, die über alle Orgs hinweg ausgetauscht werden. Nur jwtKey und mainPhoneNumber sind pro-Ort.
Verwenden Sie korrekte Session-Schlüssel-Einsatz für orgID und memberID
KSessionService speichert Schlüssel als orgID und MemberID (Capital D). Beide Controller riefen .get("orgId") und .get("memberId") die immer NullPointerExceptio...
Immer Softphone und SMS-Buttons in NavTop anzeigen
Entfernt istVoip-Gate, so dass die Tasten immer sichtbar sind, unabhängig von Feature Flag State.
Dockerfile für VOIPService hinzufügen
Passt das Shared-Bibliothek + Service zweistufige Baumuster von EmailService und andere Java-Dienste.
Verwenden Sie Feature-Typ-Name als Schlüssel vor numerische ID in org Feature Preprocessing
Java gibt Funktionen mit "Typ: "VOIP" und einem numerischen "id" zurück. Die Vorverarbeitungskette hatte vor "obj.id" vor "obj.type", was zu allen Features um n...
SMS-Tool-Button zu NavTop, Gate Softphone + SMS auf organisations.isVoip hinzufügen
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...
Security-Service.*** zu K8s ConfigMap hinzufügen
KamoJwtService verlangt diese Eigenschaft für Träger-Token-Validierung in DavAuthFilter, aber die K8s ConfigMap überschreibt application.yml und wurde fehlt es ...
Redesign Telefon-Provider-Einrichtung, um E-Mail-Provider-Format mit Logos, Hilfe-Tipps entsprechen, und korrekte nörn Ihnen tabs
- TelefonProviderSetup umschreiben, um E-MailProviderSetup-Muster zu entsprechen: list/config view split, AnimatePresence-Übergänge, Zurück-Button mit Provider-...
Die Einstellungen des Phone-Systems(s) bedingungslos anzeigen, so können orgs VOIP konfigurieren, bevor es möglich ist
- Entfernen isVoip Gate aus dem Telefon-Abschnitt auf /settings Seite - Provider Setup-Karte hat keine Bedingung, so dass es immer erscheint; Agenten und Dial-P...
Schutz vor nicht-array API-Antworten im useContacts Hook
setBooks, fetchContacts und searchKontakte jetzt sicher handhaben Fehlerobjekte und Spring paginated Wrapper statt Absturz mit 'e.map ist keine Funktion'.
Richtig Feldname in findEventsNeedingSync Abfrage von 'integration' bis 'KontaktIntegration'
Stabilisieren Sie Load Callback und fix modal Reset in PersonalProviderSection
Persönliche Kalender & Kontakte zur Registerkarte Mitgliedschaft hinzufügen
PersonalProviderSection-Komponente für Mitglieder CalDav/CardDav-Integrations hinzufügen
CalDavProviderSetup-Komponente und caldav-Teilkomponenten hinzufügen
Erstes DaemonService-Projekt - Quarz-Jobs, NATS-Publisher, K8s, CI/CD
ContactSyncLog auf Kalender/Kontaktmutationen für bidirektionale Synchronisation schreiben
Fügen Sie Google, Microsoft und GenericDav Provider stubs mit Token-Refreshers
IntegrationSettingsController, IntegrationSettingsService, SyncTriggerPublisher stub hinzufügen
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.