Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · VOIPService

    Sync TeamMember phoneEstensione di lavoro su configurazione VOIP salvare

  2. · SecurityService

    Backfill TeamMember phoneEstensione di lavoro da MemberVoipConfig all'avvio

  3. · kamo-internal

    Funzioni delle chiamate via cavo impostazioni end-to-end attraverso l'astrazione del fornitore

    - voipApi: aggiungi CallFeaturesDto type, getCallFeatures() e setCallFeatures() Chiamate API - useSoftphone: aggiungilo. da API all'avvio; setCallForward/setAutoAnswer azioni persistono tramite API; auto-answer e gli effetti call-forward si attivano sulle chiamate in entrata quando le funzionalità sono attive - SoftphonePanel: rimuovere lo stato della funzione di chiamata solo locale; cavo ingresso numerico al contesto softphone; cavo Rispondere Auto al contesto softphone; rinominare il pulsante nav per 'Manage Extended A/V Impostazioni - La sincronizzazione del cursore audio era già funzionale tramite l'usoAVSettings event bus — nessun cambiamento necessario

  4. · VOIPService

    Aggiungi funzionalità di chiamata API — chiama in avanti + auto-ritorno cablato attraverso l'astrazione del fornitore

    - Aggiungi CallFeaturesDto e SetCallFeaturesRichiesta POJOs - Aggiungi bandiere di chiamataForward/autoAnswer a ProviderCapabilities - Aggiungi default getCallFeatures/setCallFeatures all'interfaccia PhoneProvider - RingCentral: implementare tramite le Regole di risposta REST API (Incondizionabile) - FreePBX: implementare tramite GraphQL addCallforward mutation - CallFeaturesController: GET/PUT /api/voip/calls/features — DB primario, sincronizzazione nativa del fornitore

  5. · kamo-shared-library

    Aggiungere l'entità e il repository di MemberCallFeatures per le preferenze di chiamata in avanti e auto-ritorno

  6. · kamo-asterisk-support

    Impegno iniziale — Caricatore di registrazione FreePBX (GO)

    Orologi per le registrazioni WAV finite, gruppi multi-leg chiamata gambe di Asterisk UNIQUEID, e carica ogni lotto a APIService /api/voip/registrazioni/upload utilizzando un VOIP RECORDING UPLOADS-scoped Chiave API. I file vengono eliminati dal disco solo dopo che la piattaforma conferma lo storage. Bootstrap fornisce idempotently un utente AMI tramite manager custom.conf e installa MixMonitor() ganci per canale tramite extensions custom.conf, quindi chiede ad Asterisk di ricaricare i moduli dialplan/manager. Entrambi i blocchi gestiti sono circondati da banner chiaramente marcati in modo che le personalizzazione di amministratore sopravvivano. Include Dockerfile, k8s manifesti per k1m1 e k2m1 (Deployment + ConfigMap + "Segreto modello", "****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** della piattaforma, e un README.txt non tecnico per host FreePBX standalone.

  7. · kamo-internal

    VOIP RECORDING UPLOADS campo di applicazione + contatori di pipeline di registrazione/tunables

    - APIManager: nuova opzione VOIP RECORDING UPLOADS (utilizzata dal supporto kamo-asterisk su host FreePBX per caricare voicemail e registrazioni di chiamata tramite APIService). - VoipSmsTab: nuova scheda "Recording Pipeline" con quattro contatori (voicemail a processo, chiamate al processo, voicemail in errore, chiamate in errore) — rinfresca Ogni 30 anni, usa... Nuova registrazione Scheda di elaborazione con voipVmBatchSize / voipCallBatchSize / voipPollSeconds Tunables. - systemConfigApi: estendere l'aggiornamento() per inviare i nuovi strumenti; aggiungere la registrazioneStats(). - tipi / telefono: SystemConfiguration Dto guadagna i tre nuovi strumenti; VoipRecordingStatsDto aggiunto.

  8. · SecurityService

    Stat di registrazione di configurazione di sistema + elaborazioni di registrazione

    - E' una cosa da fare. restituisce i quattro contatori esposto sulle impostazioni kamo-internal → Piattaforma → Configurazione → VoIP/SMS scheda (vmPending, callPending, vmError, callError). - PUT /api/security/system-config ora accetta voipVmBatchSize, voipCallBatchSize, voipPollSeconds per DaemonService che registra-processore sintonizzato. - toDto() include i nuovi campi in modo che il frontend possa leggerli indietro.

  9. · DaemonService

    RegistrazioneProcessorJob + scorciatoia NATS per caricamenti freschi

    - Nuovo lavoro al quarzo RecordingProcessor Tacche di lavoro ogni minuto, spedisce indipendenti VM e chiamate batch contemporaneamente a ConversionService Non e' vero. E' il momento giusto. voipCallBatchSize} come tappi. - Nuovo RecordingReceivedConsumer si iscrive a voip.recording.received NATS soggetto emesso da ConversionService su upload freschi e attiva un'esecuzione immediata, quindi una registrazione appena stabilita inizia l'elaborazione in pochi secondi piuttosto che aspettare sul sondaggio periodico. - Configmap espone daemon.jobs.recordings.cron e il Parla.

  10. · ConversionService

    Registrazione ingest + pipeline di elaborazione FFmpeg

    - Novità. endpoint stadi multipart uploads inviato da APIService nel secchio MinIO... e crea una riga di staging UnprocessedRecording. Idemponte su ripiani usando (phoneServerId, asteriskUniqueId). - Nuovo punto finale (chiamato DaemonService) drena righe: scarica WAV in scena, mescola le gambe di chiamata in un singolo Opus/WebM master via FFmpeg amix, transcodes per-channel WAVs come tracce accanto al master, e carica tramite RecordingImagingService con VM RECORDING (8) / CALL RECORDING (9) ImageAssocType. - Nuovo wrapper FfmpegService (transcodeToOpusWebm / mixToOpusWebm) con timeout e la pulizia del templo. - L'editore NATS emette voip.recording.received su ogni upload in fase in modo da DaemonService può tagliare il suo sondaggio periodico. - Dockerfile installa ffmpeg nella fase di runtime (alpine ffmpeg navi libopus per impostazione predefinita). - ConfigMap espone E' il momento giusto. (condiviso cross-service) segreto interno) in modo che i nuovi endpoint possano autenticare APIService e Chiamatori DaemonService.

  11. · APIService

    VoipRecordingUploadController per upload di supporto kamo-asterisk

    POST /api/voip/registrazioni/upload accetta corpi multiparti da supporto kamo-asterisk in esecuzione su host FreePBX. Convalida la X-Api-Key ha il nuovo VOIP RECORDING UPLOADS ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** inoltra le intestazioni multipart payload + metadati (X-Phone-Server-Id, X-Asterisk-Unique-Id, X-Recording-Kind, X-Primary-Extension) a ConversionService E' il momento giusto

  12. · kamo-shared-library

    UnprocessedRecording staging entità, ImgDat tracce, registrazione servizio di imaging

    - Fix ImageAssocType ID collisione: VM RECORDING=8, CALL RECORDING=9 (erano entrambi duplicare MY DOCS a 4). - Aggiungi una registrazione master. Per-channel Opus/WebM traccia accanto al concetto di thumbnail esistente. - Aggiungi ImageMimeType.AUDIO WEBM (audio/webm) per i contenitori Opus-in-WebM prodotto dalla pipeline di conversione. - Nuova registrazione non elaborata (UUUID id, IS VM, PHONE SERVER ID, EXTENSION, ASTERISK UNIQUE ID, IS PROCESSED, IS ERROR, ERROR MESSAGE, RESULT IMG ID, DATE CREATED, DATE PROCESSED) staging enti + repository per il kamo-asterisk-support → ConversionService → DaemonService pipeline. - Nuova registrazioneImaging Servizio che carica un master Opus/WebM master in imaging con binari Opus/WebM per canale collegati tramite ImgDat.trackCount. - SystemConfiguration: aggiungi voipVmBatchSize / voipCallBatchSize / voipPollSeconds per i sintonabili del processore di registrazione DaemonService.

  13. · kamo-asterisk-support

    Impegno iniziale — Caricatore di registrazione FreePBX (GO)

    Orologi per le registrazioni WAV finite, gruppi multi-leg chiamata gambe di Asterisk UNIQUEID, e carica ogni lotto a APIService /api/voip/registrazioni/upload utilizzando un VOIP RECORDING UPLOADS-scoped Chiave API. I file vengono eliminati dal disco solo dopo che la piattaforma conferma lo storage. Bootstrap fornisce idempotently un utente AMI tramite manager custom.conf e installa MixMonitor() ganci per canale tramite extensions custom.conf, quindi chiede ad Asterisk di ricaricare i moduli dialplan/manager. Entrambi i blocchi gestiti sono circondati da banner chiaramente marcati in modo che le personalizzazione di amministratore sopravvivano. Include Dockerfile, k8s manifesti per k1m1 e k2m1 (Deployment + ConfigMap + "Segreto modello", "****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** della piattaforma, e un README.txt non tecnico per host FreePBX standalone.

  14. · kamo-internal

    Sostituisci la scheda di contatti di mock con SoftphoneContatti completamente modificati

    Estrae un nuovo componente SoftphoneContacts che collega i contatti softphone scheda ai contatti reali API tramite useContacts(). Sostituisce 4 mock hardcoded contatti con dati dal vivo da tutti i libri di contatto. Caratteristiche: - Pillole di filtro del libro e del gruppo con selettori a discesa - Debounced search, ordina per cognome / nome completo - Avatar codificato a colori (hash deterministico), supporto foto - Elenco contatti con il pulsante di accesso rapido Hover-reveal - Vista dettagliata (sostituisce elenco) che mostra telefoni, e-mail, org, note - Modalità di modifica in linea per tutti i campi (telefoni/email multi-valore con add/remove) - Elimina il contatto con la fase di conferma - Stati scheletri vuoti e di carico - "Nuovo contatto" naviga a /contatti? azione=creare Aggiorna i contatti/page.tsx per aprire automaticamente la finestra di dialogo di creazione quando ?action=creare query param è presente (usato dal softphone "New" pulsante).

  15. · kamo-internal

    Sostituire l'estensione Chip con il testo in linea accanto al ruolo nel Centro Interazione

  16. · kamo-internal

    Rimuovere il campo di estensione del telefono manuale; scrivere l'estensione VOIP attraverso a SecurityService su salvare

  17. · SecurityService

    Includi l'estensione di phoneWork nella risposta di dipartimento; accetti il telefonoExtension sul membro PUT

  18. · kamo-shared-library

    Add to****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

  19. · kamo-internal

    Filo VAD + push-to-talk; rimuovere le impostazioni non implementabili

    - vadAbilitato ora passato come voceDetezione dell'attivitá nella costruzioneAudioConstraints così il browser onora il gioco quando si apre microfono per una chiamata - pushToTalk auto-muta il microfono a chiamata accettare e installa keydown/keyup ascoltatori che non funzionano mentre il tasto hot configurato è tenuto - Impostazioni rimosse che non avevano cablaggio funzionale e non possono essere implementate tramite browser WebRTC API standard: micGain (no GainNode in pipeline SIP), HighPassFilter, noiseGate, vadThreshold, hdVoice, telecameraBackgroundBlur (richiede ML), fotocameraBrightness/cameraContrasto (solo anteprima CSS) - Pulito l'interfaccia AVSettings e DEFAULT AV SETTINGS di conseguenza; griglie di toggle riequilibrate dopo la rimozione

  20. · kamo-internal

    Elenco della suoneria girevole con filtro di ricerca

    Fare il pannello del catalogo della suoneria corrispondere l'altezza della colonna destra e la pergamena verticalmente quando l'elenco trabocca, così i membri possono navigare come più toni sono aggiunti. Aggiunge un campo di ricerca che filtra per etichetta o nome file, con un Pulsante chiaro e messaggio a stato vuoto.

  21. · kamo-internal

    Aggiungi altre sette suonerie al catalogo

    Aggiunge Battleship Horn, Demon Horn, Land Line, 1985 Anello, Office Phone, Ringing Old Phone, e Olé sotto /pubblico/suoni/ringtones/ e fili loro in RINGTONE CATALOG così appaiono accanto all'esistente Predefinito / Sci-Fi / Buzzer / Opzioni silenziose sul sottotab Ringtones.

  22. · kamo-internal

    Aggiungi le suonerie Sci-Fi e Buzzer al catalogo

    Getta due nuovi beni di suoneria in /pubblico/suono/ringtones/ e li registra in RINGTONE CATALOG così appaiono nelle suonerie subtab e può essere impostato come il tono softphone in ingresso predefinito.

  23. · kamo-internal

    Layout audio a tre colonne, drop salvato-banner, larghezza di riempimento

    Lays the Audio subtab out as Microphone | Speaker | Advanced through the riga completa su schermi lg+ (md ancora le coppie due-up, xs stack). The La scheda avanzata passa a uno stack verticale all'interno della sua colonna più stretta. Rimuove l'inseguimento "Impostazioni salvate automaticamente" footer — il il comportamento è implicito e la carta stava solo prendendo spazio. Forze sezione Pannelli da carta a larghezza: 100% e aggiunge alignItems="stretch" al Griglia di ogni subtab così le carte riempiono sempre il loro bordo di colonna all'edge.

  24. · kamo-internal

    Dividere le impostazioni AV in sottotitoli Audio/Video/Ringtones

    Riorganizza la scheda Audio/Video in tre sottotitoli interni e laici ogni uno fuori orizzontalmente così le impostazioni si adattano all'interno della viewport senza la parete di scorrimento verticale che avevamo prima. Corregge anche il catalogo della suoneria a puntare sul reale /sounds/ringtone.mp3 asset invece di percorsi fantasma sotto /sounds/ringtones/, quindi anteprime e la sessione softphone sempre on condividere una singola suoneria canonica.

  25. · kamo-internal

    Aggiungere Audio / Video Impostazioni scheda e filo in softphone

    Aggiunge un negozio di preferenze AV per dispositivo (localStorage, specifica per macchina, non roaming) più una scheda completa su /settings/member/hyd> per configurare e testare microfono, altoparlante, ringer e fotocamera. La finestra degli strumenti softphone, la riproduzione di suoneria e gli adattatori SIP SDK ora onorare queste impostazioni live: dispositivo routing via setSinkId, getUserMedia vincoli (dispositivo + EC/NS/AGC/sample rate), volume tono DTMF, dispositivo ringer + selezione tono, mute-on-join, e le notifiche desktop.

  26. · kamo-internal

    Sempre su sessione SIP con auto-popup + suoneria su chiamate in entrata

    Il softphone utilizzato per registrare solo mentre la finestra dello strumento popup era aperta — chiudere e le chiamate in entrata sono state silenziosamente perse. Sollevare la sessione in un SoftphoneProvider montato a AuthenticatedToolWrapper, così SIP REGISTER è tenuto continuamente mentre l'operatore è firmato e qualsiasi INVITE in entrata ottiene l'attenzione dell'operatore. - app/hooks/useSoftphone.ts: rinominare il gancio di implementazione per useSoftphoneSession per rafforzare che deve essere montato esattamente una volta per sessione ( possiede le credenziali SIP e il REGISTER). Il nuovo SoftphoneProvider gestisce la sessione gancio una volta, espone lo stato attraverso il contesto, e reagisce ad hasIncoming Chiamata transizioni — apre la finestra degli strumenti softphone tramite uno strumento:aperto evento personalizzato (single-instance, quindi si concentra solo se già aperto) con ID chiamante in il titolo, e gioca /sounds/ringtone.mp3 su un loop fino all'utente accetta/rifiuti/il telecomando si blocca. Uso pubblicoSoftphone() hook reads dal contesto. Passare l'importazione al contesto. # Imbocca l'albero degli attrezzi # SoftphoneProvider così la sessione vive fino a quando lo stato di auth. classico cadenza NA (440Hz + 480Hz, 2s su, 4s silenzio) così audio.loop=true produce un anello naturale/pausa/anello. - 72 KB. I browser possono bloccare il gioco iniziale() fino a quando l'utente non ha eseguito il gesto pagina; l'operatore ha tipicamente cliccato almeno una volta al momento della chiamata arriva, quindi questo è raramente un problema in pratica.

  27. · KlusterServices

    Seed pbx.k1.kluster.kamocrm.com come dominio statico

    Il softphone del browser ha bisogno di SIP-over-WSS per atterrare su un hostname con un reale TLS cert. Aggiungi il nome host di FreePBX admin / WS a STATIC DOMAINS così il auto-cert seeder disposizioni un per-host Let's Encrypt cert per esso incondizionatamente invece di affidarsi a esso che appare nei registri di accesso Traefik. Una volta che il cert viene rilasciato, il percorso interno temporaneo.kamocrm.com/voip-ws (commesso prima come una soluzione di lavoro) può essere ritirato e il softphone può utilizzare l'URL canonica pbx.k1.kluster.kamocrm.com/ws.

  28. · kamo-register

    Utilizzare il nome e la descrizione breve org nella testa HTML

    Sostituire la logica del titolo basata su org-API con il sito config.jsonNameShort così il il titolo segue lo stesso modello di altri siti: "Register - {siteNameShort}". Aggiunge la descrizione meta tag da config.json. Rimuove l'importazione inutilizzata di ThemeConfig.

  29. · kamo-login

    Utilizzare il nome e la descrizione breve org nella testa HTML

    DynamicMetaLoader ora imposta documento.title a "Login - {siteNameShort}" e scrive la descrizione org nel tag meta descrizione. Dati statici layout.tsx fallback aggiornati; rimosso i metadati KamoCRM OG/Twitter.

  30. · kamo-internal

    Utilizzare il nome e la descrizione breve org nella testa HTML

    DynamicMetaLoader ora imposta document.title al sitoNameShort (was siteName) e scrive la descrizione org nel tag meta descrizione. Fallback statico layout.tsx aggiornato ai valori generici.

Il tuo universo ti sta aspettando.

Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.

Gratis per sempre — nessuna carta di credito richiesta