Direkt zum Inhalt
KAMOUniverse

Changelog

Was ist neu?

Jede Verbesserung an der Plattform, wie sie geliefert wird.

  1. · kamo-internal

    Produktions-Grade History + Voicemail Tabs mit Media-Player-Tool

    History Registerkarte (SoftphoneHistoryTab.tsx): - Unendliche Scroll via IntersectionObserver innerhalb des Scroll-Containers des Panels - Filterchips: Alle / Inbound / Outbound / Verpasst / Aufgezeichnet - Aufnahme von Icon in Zeilen Aktionen, wenn die Bildseite eine Recording-Reihe hat - Menü über den Überlauf probetrug (Kontakte hinzufügen) - Click-to-Call zurück über vorhandenes dialpad Registerkarte Voicemail (SoftphoneVoicemailTab.tsx): - Unendliche Scroll, Filterchips (Alle / Ungeachtet / hat Audio) - Per-Ruder Play / Rückruf / Mehr Aktionen - Auto-Mark-Lesung auf dem Spiel - Zwei-Optionen-Löschdialog: Archiv (Soft-hide, alle Benutzer) vs Permanent löschen (gegated by VOIP_VOICEMAIL_PERMANENT_DELETE rechts; fällt zurück in den deaktivierten Zustand für Benutzer ohne es) - Mark-all-Lese-Taste mit No-op-when-Null-Bezahl MediaPlayer Popup-Tool ************ - Audio: synthetisierte Wellenform-Stil-Scrubber, Click-to-Seek, Replay10/Forward10, Wiedergaberate (0,5x-2x), Schleife, Lautstärke + stumm, Ausgangsgerät aus AV-Einstellungen honoriert - Video: enthaltener Ansichtsschutz, PiP, Vollbild, gleicher Wäscher + Steuerung - Multi-Track-Auswahl für Anrufaufnahmen (Master + pro Kanal) - Download - Zwei Quellmodi: voipApi-Aufnahme (Call/VM) oder Bildzweck von imgId - Registriert in tool/registry/registrations.ts as multi-instance Haken + Sanitär: - useSoftphone stellt paginated history + Voicemails (loadMore, hatMore, isLoading) und Archiv/permanent-löschen Aktionen - voipApi gewinnt LookupAufnahmen, getRecordingMetadata, archiveVoicemail, paginated getVoicemails - /api/voip proxy geht Audio/Video/Oktett-Stream-Körper durch mit ************ intakt (keine Pufferung) so Medienelemente schrubben - Neue **************** weiter zu DocsServices neuem Streaming-Endpunkt mit Range - VOIP_VOICEMAIL_PERMANENT_DELETE zur Frontend RoleRightType-Registry hinzugefügt, so checkRechte Gates die löschen UI

  2. · InitializerService

    Migrationsrunner für Recording Provider-lookup-Kolumnen + VM-Archivsäulen

    Fügt RECORDINGS.provider_instance_id (UUID) und provider_external_id (VARCHAR(64)) plus den Composite idx_recordings_provider_lookup Index hinzu, der vom Tabt der Softphone History verwendet wird. Fügt auch PHONE_VOICEMAIL.is_archived + date_archived für den neuen Soft-Archiv-Flow hinzu. Wische alle bereits vorhandenen RECORDINGS / RECORDING_EXTS-Reihen im selben Pass - natürlich idempotent (das Prädikat passt nur zu Zeilen, deren Provider_external_id immer noch NULL ist, was nicht passieren wird, sobald ConversionService auf dem neuen Codepfad ist). Bestellen Sie 35 - nach **************** (30) so die Aufnahmetabellen existieren, bevor die ALTERs landen.

  3. · ConversionService

    Bewahren AnbieterInstanceId + AnbieterExternalId auf Aufnahme bei Ingest

    Fäden Sie den X-Phone-Server-Id von asterisk-support und X-Asterisk-Unique-Id (bereits im UnprocessedRecording) auf die neuen RecordingMetadata Felder ein, so dass Anruf-/Voicemail-Zeilen im Bildgebungssystem den Join-Key zurück zur Quell-Provider-Reihe tragen. Für Voicemails sendet der Helfer den Rohdateiname-Basisnamen (z.B. msg0000); wir entfernen das msg-Präfix und führende Nullen, so dass der gespeicherte Schlüssel dem entspricht, was FreePBX Voicemail REST API als Nachrichten-ID zurückgibt.

  4. · DocsService

    ************ mit HTTP Range Unterstützung hinzufügen

    Generisches Streaming-Endpunkt für Audio-/Video-Imaging-Assets, das vom kamo-internen MediaPlayer-Tool verwendet wird. Verö es nutzt die ImageService-Autorisierung (gleich wie /download/...), sondern streamt mit Accept-Ranges + Content-Range, so dass Medienelemente ohne Laden der vollständigen Datei schrubben können.

  5. · VOIPService

    Wiedergabe, Voicemail-Archiv, gepflasterte Voicemail, Historie Bereicherung

    - Neuer RecordingController mit Bulk-Lookup, range-streamed audio für Master + pro Channel Tracks und Metadaten für das Media-Player-Tool-Fenster - CallController.getCallHistory / getVoicemails bereichern jede Zeile mit BildaufnahmeId über den neuen RecordingLookupService - Einzelrundfahrt, keine N+1 - PhoneProvider.getVoicemails nimmt jetzt (memberId, Seite, Größe); FreePBX paginates Client-Seite von einem Fetch, RingCentral verwendet natives Paging, KamoPBX weiterhin werfen NotSupported - Voicemail Archiv Endpunkt (Soft-hide via PhoneVoicemail.isArchived) und permanent-lösch gated by VOIP_VOICEMAIL_PERMANENT_DELETE . godActive Bypass erfordert sowohl GD Förderfähigkeit und aktives Umschalten - PhoneProvider gewinnt getInstanceId(), so dass Controller den Join-Key für die Aufnahme von Lookups ohne einen zweiten Werksaufruf auflösen können

  6. · kamo-shared-library

    Provider-Nachahing-Schlüssel auf Aufnahme, Voicemail-Archiv, MinIO-Reihenstreaming

    - Aufzeichnung: ProviderInstanceId + ProviderExternalId für den Beitritt Anbieter Call-History / Voicemail-Reihen zurück zu bildgebenden Vermögenswerten hinzufügen - PhoneVoicemail: hinzufügen istArchived + DatumArchiviert für Soft-hide aus Softphone-Listen - RoleRightType: VOIP_VOICEMAIL_PERMANENT_DELETE hinzufügen (Tore destruktiv löschen; Archiv bleibt für alle verfügbar) - MinIOStorageService: openRange() + RangeStream hinzufügen, damit Audio/Video-Endpunkte HTTP Range honorieren können - RecordingImagingService: Thread Provider-ID + externe ID durch RecordingMetadata auf die Recording-Reihe bei ingest

  7. · kamo-internal

    History-Tab hinzufügen - paginierte Audit-Zeitleiste mit Suche und Filter

    - LeadHistoryPanel: klebrige Filter-Toolbar mit depranger Suche, ************ Filter, MUI-Tabelle mit Paginierung, farbkodierte Event-Chips, Mitglieder-Namen-Auflösung für Zuordnung/Kontofelder - LeadApi: getLeadHistory() und getLeadHistoryFilters() mit voller Abfrage-param Unterstützung - LeadHistoryEntry, LeadHistoryActor, LeadHistoryFieldMeta, LeadHistoryPageResponse, LeadHistoryFiltersResponse Typen - Next.js Proxy-Routen für ************ und /filter - LeadViewClient verdrahtet, um LeadHistoryPanel zu machen, wenn History-Tab aktiv ist

  8. · SecurityService

    GET /{id'/history und /{id'/history/history/filters endpoints hinzufügen

    Paginiert, filterbar, durchsuchbar, durchsuchbar Blei-Geschichte Endpunkt mit Batch-Schauspieler-Ladung (keine N+1). Filters Endpoint liefert verschiedene gebrauchte Felder, alle Registrierungsfelder, verschiedene Akteure und alle Eventtypen. Alle mutierenden Endpunkte übergeben das aufrufende Mitglied nun als Akteur an LeadHistoryService zur Zugabe.

  9. · kamo-shared-library

    Fügen Sie Lead-History Audit-Log hinzu - Entität, Registrierung, Service, DTO, LeadService-Haken

    - LeadHistory entity (UUID PK, schlicht Long FKs - keine FK-Beschränkungen, um Bleilöschen/Konversion zu ermöglichen) - LeadHistoryEventType enum mit menschenlesbaren Etiketten - LeadHistoryFieldRegistry: eine einzige Quelle der Wahrheit für 55 Tracked Lead-Felder; das Hinzufügen eines Feldes ist eine Zeile - LeadFieldDescriptor record (Schlüssel, Label, Kategorie, Extraktor) - LeadHistoryService: Schnappschuss/Diff-Pipeline, ************ paginated+gefilterte FundHistory, distinctFields/Actors for filter dropdowns - LeadHistoryDTO mit verschachtelten ActorDTO; alle Long IDs als String für CockroachDB JS Präzisionssicherheit - LeadService: Historienhaken zum Erstellen, Aktualisieren, Löschen, Zuweisen vonLeadAccount, unassignLeadAccount

  10. · SecurityService

    Wire LeadHistoryService-Schauspieler verfolgt LeadController

  11. · kamo-internal

    Lead-Account-Zuweisung UI, Währungssystem, Zuweisung/neue Kontoseiten, Einstellung Währungsfeld hinzufügen

  12. · SecurityService

    Fügen Sie Bleikonto-Zuweisungs-Endpunkte hinzu, Update AccountController für CurrencyType

  13. · kamo-shared-library

    CurrencyType enum hinzufügen, CountryType mit der Primärwährung aktualisieren, Währung zu Konto/Organisation hinzufügen, Lead-Account-Zuordnung zu LeadService hinzufügen

  14. · kamo-internal

    Dynamischer Mitgliedstyp Label im Titel Meine Kontoseite

    Titel lautet nun "Meine {Mitglieder|Team Member] Konto" mit dem org-konfigurierten Verhaltensetigt, indem automatisch gewechselt wird, sobald der Typ des Mitglieds geladen wird.

  15. · kamo-internal

    Bewegen Sie Dokument-Taste in DocManager Toolbar

    Der Button war nur über die Aktionen-Requisite auf /doc/manager verfügbar. Alle Logik (State, Handler, DOC_TYPES, Menü) in DocManager so verschoben es erscheint auf jeder eingebetteten Instanz. Vereinfachte Seite.tsx auf DocManager ohne Aktionen prop.

  16. · kamo-internal

    Verschieben Mailing Address in 3-Spalten-Reihe mit Lead Info und Primärkontakt

  17. · kamo-internal

    Internationale Unterstützung - CountrySelect, LanguageSelect, SubdivisionField über alle Formen hinweg

    - Wiederverwendbare CountrySelect (207 Länder, Flaggensymbole), LanguageSelect (26 Sprachen, Flaggensymbole) hinzufügen, SubdivisionField (US State Dropdown mit Flaggen; andere Länder zeigen beschriftete Textfeld) - Fügen Sie Länderkonstanten hinzu (countries.ts, languages.ts, usStates.ts, timezones.ts) - Lead-Ansicht Details Reiter: pro Karte in-Place-Bearbeitung mit ************ Felder - Lead-Cench-Formular: vollständiges Land/Unterteilung/Zeitzonen-Down ersetzt begrenzte Inline-Listen - LabelManager-Einstellungen: org Standardsprache in Abschnitt 8, CountrySelect+SubdivisionField in der Adresse - ContactInfoStep (Netzwerk erstellen Assistent): CountrySelect+SubdisvisionField ersetzt begrenzte Auswahl - MyAccountTab: CountrySelect+SubdivisionField ersetzt Klartextfelder - Typen/Bleis.ts: Länder- und Unterteilungsfelder hinzufügen

  18. · kamo-shared-library

    Internationale Unterstützung hinzufügen . Bleiland/Unterteilung/ Zeitzone, Org Sprache, CountryType isProvince

    - CountryType: PROVINCE_NAMES set hinzufügen, isProvince(), getSubdivisionLabel() - Organisation: Sprache hinzufügen (LanguageType) Feld - Blei: Land (CountryType), Unterteilung (String), Zeitzone (TimezoneType) Felder hinzufügen - ************ fügen Land, Unterteilung, Zeitzonen-Sattel hinzu - LeadService.createLead: neue Felder handhaben; Standardsprache+country aus Org-Einstellungen - LeadService.updateLead: neue Felder bearbeiten - ************ fügen Sprache berührtKey-Handler hinzu

  19. · kamo-internal

    ASSIGN_LEADS rechts, Agent filter unassigned Option, Gittersäulenbereinigung

    - Gate 'Unassigned Leads' Agent Filteroption hinter ASSIGN_LEADS rechts - 'All Leads' schließt nicht zugeordnete Leads für Mitglieder ohne das Recht aus - Entfernen Sie Straße, Produkt, Quellsäulen; Entfernen Sie Produkt/Quelle Filter Dropdowns - Die Spalte der Firma entfernen; Kontaktspalte zeigt Firmennamen, fällt auf Kontaktname zurück - Die Vendor-Spalte zeigt Tooltip mit Produkt - Quelle Detail - Datumsspalten fallen Wochentags-Präfix, schrumpfen von 170px auf 140px - DateTimeDisplay: showWeekday prop hinzufügen (Standard falsch)

  20. · kamo-shared-library

    ASSIGN_LEADS rechts (ID 137) unter CRM-Bereich hinzufügen

  21. · kamo-internal

    Zuweisen zum Feld Market & Assignment auf /leads/new

    - Fetches aktive Teammitglieder von ************ auf dem Berg - Gruppenmitglieder nach Abteilungen mit alphabetisch sortierten Abteilungen und Mitgliedern - Formate Namen als "Letzt, First"; erste Option ist "Auto Assign / Unassigned" - Neubestellungen Abschnitt Felder: Bleimarkt, Zuweisen, Beste Zeit zu kontaktieren, Anbieter, Produkt, Prospect-Typ (alle lg=4) - Behebt LeadsApi.ts zu senden zugewiesenTeamMitgliedId anstelle des totenUser-Feldes - Fügt zugewiesenTeamMemberId zum Lead-Typ hinzu

  22. · kamo-asterisk-support

    AufzeichnungenIn + pro Datei-Erweiterung im Upload-Manifest

    - Watcher: jede emittierte Aufzeichnung trägt RecordedAt, abgeleitet von der EPOCH Segment unserer verwalteten **************** Dateiname, Rückgriff auf Datei mtime für Voicemail / Legacy-Dateien. - Grouper: CallBatch verfolgt jetzt FileExtensions[] (eine pro Datei, parallel zu Dateien[]) und der Charge insgesamt RecordedAt (früher Start). Sort Schlüssel für Beine ist RecordedAt mit FinalizedEine als Tiebreaker so die Meisterbein ist deterministisch. - Uploader: manifest enthält jetzt top-levelrecordingAt und per-Datei Erweiterung. ConversionService verbraucht beides, um die Aufnahme zu schreiben (date_recorded, Länge von ffprobe) und pro-Leg RecordingExt-Reihen.

  23. · ConversionService

    Metadaten zur Bildgebung übergeben - ffprobe Länge + manifestes Parsing

    - ************ läuft ffprobe -show_entries format=duration auf dem Master Opus/WebM, gibt ms zurück. 0 = unbekannt (nicht tödlich). - ************ jetzt: * läuft SonbeDurationMs auf dem Master, um die Aufnahmelänge zu erhalten; * analysiert das Manifest (von Kamo-Sasterisk-Unterstützung eingegeben) für recordingAt und pro-Datei-Erweiterung/Kanal-Daten, zurückfallen auf die Inszenierungsreihe dateCreated und Channel-Name Parsing für ältere Nutzlasten; * geht ein ************ Datum abgefüllt, lengthMs, teilnehmenExtensions) zu RecordingImagingService, so dass es können die neuen Datensätze Recording + RecordingExt schreiben.

  24. · kamo-shared-library

    Recording + RecordingExt Einheiten, RecordingImagingService schreibt sie

    - Neue Aufnahmeeinheit (UUID-ID, IMG_ID, IS_MASTER, IS_VM, EXTENSION, MEMBER_ID, LENGTH, DATE_RECORDED, DATE_CREATED [DB-defaulted via @CreationTimestamp]). Eine Zeile pro abgeschlossener Voicemail oder Anrufaufnahme, die auf Bildgebung hochgeladen wurde. - Neue RecordingExt-Einheit (UUID-ID, RECORDING_ID, EXTENSION, MEMBER_ID, IS_MASTER). Eine Zeile pro Kanal, der an der Aufnahme beteiligt war; die Master Bein ist markiert IS_MASTER=true, jedes andere Bein falsch. - **************** nimmt jetzt eine RecordingMeta Bundle (phoneServerInstanceId, dateRecorded, lengthMs, teilnehmenExtensionen) und beharrt Recording + RecordingExt-Reihen in die gleiche Transaktion wie das Img/ImgDat. MitgliedId wird pro Bein gelöst via **************** auf der Ursprung der VOIP-Instanz (null, wenn nicht zugewiesen).

  25. · kamo-internal

    Update Platform Administrationskarten auf einheitliche Tab-Struktur

    Ersetzen Sie die beiden abgestandenen Karten (Organisationen Standalone-Seite + Konfiguration) mit fünf Karten passend zu den aktuellen Tabs: Allgemein, Organisationen, VOIP & SMS, System Benutzer und Fortgeschritten - jede Verknüpfung direkt mit dem richtigen ?tab= param.

  26. · kamo-internal

    Fullwidth-Grid-Layout und Bewegungssynchron-Trigger von Advanced Register

    - Redesign VOIP & SMS-Tab, um die volle Content-Bereich Breite zu verwenden: Pipeline-Statistiken Spannweite die obere Reihe, Aufzeichnung Verarbeitung und Global Sync Zeitplan sitzen nebeneinander in einem Zwei-Säulen-Raster am lg+ Breakpoint - Pipeline-Statistikkarten zeigen Live-Zählungen mit Null-State-Checkmarks und Fehler Farbcodierung; Auto-Refresh alle 30er im Untertitel vermerkt - Global Sync-Karte konsolidiert Zeitplan-Einstellungen, Last-Sync-Zeitstempel-Reihe, und manueller Trigger in ein Panel; aktivierter/Pause-Chip im Header - Bewegen Sie "Force global VOIP sync" aus dem Registert "Erweitert" (Duplicate von Trigger bereits auf VOIP & SMS vorhanden); Registerkarte erweitert jetzt Platzhalter

  27. · kamo-internal

    Zusammenladen Sie Organisationen in Konfigurationsseite mit einheitlichem Tab nav

    - Organisationen als Reiter hinzufügen in ************ (Allgemein · Organisationen · VOIP & SMS · Systembenutzer · Erweiterte Bestellung) - Löschen ************ Standalone Seite - Update Platform Administration nav in SettingsStatusWindow auf alle 5 Tabs als Sub-Items auf Konfiguration?tab=... - Befestigen Sie Layout über alle Registerkarten: konsistent p: {xs:2, sm:3" Polsterung, so dass Inhalte nicht mehr in Kartenwände laufen - Verbessern Sie GeneralTab-Statistenkarten mit Icon-Hintergrund und strafferem Typografie-Rhythmus - Update SettingsView Titel/Untertitel für die einheitliche Seite

  28. · kamo-marketing

    Go-Logo zu BUILT MIT Banner hinzufügen

  29. · kamo-internal

    Oberfläche PHONE_SERVER_ID auf Telefon-Instance-Registerkarte

    Betreiber konfigurieren Kamo-Sternisk-Unterstützung auf einem FreePBX-Host die passende VoipProviderInstance UUID in die Konfigurationsdatei des Helfers als PHONE_SERVER_ID. Bisher mussten sie durch die URL-Leiste oder die Datenbank. Neuer Abschnitt "Phone Server ID" auf /settings/features/phone/{id' Übersicht zeigt die UUID in einem schreibgeschützten Monospace-Feld mit einem One-Click Kopie-Button (CopyableIdField Helfer, auch wiederverwendbar für zukünftige ähnliche Bezeichner).

  30. · kamo-internal

    Klickbare VOIP-Erweiterung im Interaction Center öffnet Softphone mit der Nummer vorgefüllt

Euer Universum wartet.

Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.

Für immer kostenlos – keine Kreditkarte erforderlich