Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· SecurityService
Includere la descrizione org in config.json
Aggiungi campo descrizione per costruireConfigJson() e passare org.Descrizione() da writeConfigFiles() così il config.json a tema trasporta l'org descrizione per frontends da usare nei meta tag HTML.
· kamo-internal
Elenco dei biglietti di colore globo da richiesta o connessione chat
· MediaService
Aggiungere la ricerca della presenza del richiedente per gli agenti della lista dei biglietti
· kamo-internal
Aggiungi includonoCompany al mercato popup e companyName a lead
Aggiungi/modificare il mercato (LeadMarketManager): - Controllo radio "Nome Compagnia Track" / "Solo Individuale" (richiesto) - Predefiniti per disattivare il nuovo mercato; pre-riempite sulla modifica - Validato e inviato come inclusoCompany in creare/aggiornamento richiesta Leads datagrid (LeadManager): - La colonna aziendale mostra l'aziendaName per i lead da includere i mercati aziendali - Mostra "No specificato" quando includonoCompany=true ma il nome è vuoto - Spettacoli "—" per mercati dove includonoCompany=false/null - Ricerca rapida (AG Grid QuickFilter) include automaticamente i valori aziendali Crea il modulo di piombo (CreateLeadClient): - Rende condizionalmente Azienda Nome campo di testo quando mercato includonoCompany=true - Campo è facoltativo (max 50 carboni), cablato in carico di pagamento di presentazione tramite leadApi leadApi: azienda Nome mappato attraverso creareAvviare e aggiornareLead richieste
· InitializerService
Aggiungi le colonne company e company name
LeadCompanyColumnRunner (Order 40) aggiunge idempotently: - lead markets.include company (BOOLEAN, nullable) — traccia se un mercato richiede il nome dell'azienda sui lead - lead.company name (VARCHAR(50), nullable) — memorizza il nome dell'azienda a il livello di piombo quando il mercato ha inclusoCompany=true
· SecurityService
L'esposizione include le risposte di input-config e market-config dell'azienda
Tutti e due. E poi... ora includere la bandiera includereCompany in modo che il frontend sa se mostrare campo nome azienda sulla creazione di piombo.
· kamo-shared-library
Aggiungi includereCompany a LeadMarket e companyName a Lead
- LeadMarket entità ottiene include company (Boolean, nullable) - L'entità di piombo ottiene company name (String, max 50, nullable) - LeadMarketDTO, CreateLeadMarketRequest, UpdateLeadMarketRequest porto includonoCompany - LeadDTO porta companyName ed espone includonoCompany all'interno MarketInfoDTO - No, no. portare la societàName - I cavi LeadMarketService includonoCompany su creare/aggiornamento - LeadService fili societàName su creare / aggiornare e lo preserva attraverso le conversioni di tipo ipotecario
· kamo-internal
Mostra il percorso del tipo di vendita in Add Lead sottotitoli
Appendere il tipo di vendita del mercato e Sub-Tipo alla linea "Adding to" in modo da la forma rispecchia le etichette utilizzate nel popup Edit Market E' il momento giusto. Rendering come "Aggiunta a {Market} (Servizio > Mortgage Residenziale)" quando un sottotipo è set, "Aggiunta a {Market} (Servizio)" quando solo un genitore è impostato, e "Aggiunta a {Market}" quando non è impostato nessun tipo di vendita.
· kamo-internal
Unified PhoneSdk che supporta RingCentral + sip.js (FreePBX)
L'amo softphone utilizzato per istantanare il telefono centrale-web incondizionatamente, che ha gettato su qualsiasi forma di credenziali FreePBX perché che SDK è codificato duro Il formato di provisioning WSS di RingCentral. - Nuova interfaccia PhoneSdk definisce una superficie diagnostica del fornitore (avviamento, arresto, Invitare... più un PhoneSdkSession con... - RingCentralPhoneSdk avvolge ringcentral-web-phone, preservando l'esistente Comportamento RC. - SipJsPhoneSdk avvolge sip.js (UserAgent + Registerer + Inviter/Invitation), collega l'audio remoto tramite la connessione peer negoziata, supporti in-dialogo re-INVITE per trattenere/mantenere, e si riferisce per il trasferimento. - crearePhoneSdk sceglie l'adattatore da creds.provider (RING CENTRAL, FREE PBX, KAMO PBX). - useSoftphone ora drive SDK unificato e superfici il vero errore SDK testo in registrazioneErrore invece del generico 'Phone SDK non riuscito a inizializzare la stringa. - Aggiunge la dipendenza sip.js@0.21.2.
· VOIPService
WSS-aware SIP credenziali per softphone del browser
Il endpoint /api/voip/sip/credentials ora restituisce le credenziali un lato del browser SIP stack può effettivamente utilizzare: trasporto WSS, dominio pubblico e un URL wsServers. - SipController risolve il membroVoipConfig, convalida VOIP è abilitato e viene assegnata un'estensione, poi percorsi per la specifica del membro istanza (non primaria dell'org). Restituisce descrittivo 409 quando il membro non è configurato piuttosto che produrre credenziali vuote. - SipInfo guadagna wsServers per SIP-over-WebSocket; SipCredentials Risultato guadagni provider così il frontend sceglie l'adattatore SDK giusto (RingCentral WebPhone vs SIP.js per FreePBX/KamoPBX). - FreePBXProvider deriva il dominio SIP dalla base configurataUrl e default wsServers a wsss:// <host>:8089/ws. Per-instance overrides (sipDomain, sipWsServer, sipWssPort, sipTransport) letto da configJson coprire distribuzioni divise in cui SIP termina su un altro hostname o Traefik termina TLS a /ws sul porto 443. - PhoneProviderFactory analizza i nuovi campi e feed di configurazione opzionale loro in un record SipTransportConfig su FreePBXProvider. - RingCentralProvider etichetta le sue credenziali con provider=RING CENTRAL.
· KlusterServices
Aggiungi il trasporto WSS WebRTC per i softphone del browser
Chan pjsip di Asterisk ora lega un trasporto WebSocket semplice su 0.0.0.0:8089 E Traefik termina la TLS all'indirizzo. così kamo-internal può registrare i softphone del browser sopra la wildcard esistente cert senza gestire certs all'interno del baccello. - configmap-k1m1.yaml: start.sh scrive pjsip.transports custom.conf con Trasporto WS e pjsip.endpoint custom post.conf con webrtc=yes overrides per le estensioni esistenti (8080, 2523), pernottate al trasporto WS. - service.yaml: esporre la porta 8089 (sip-ws) sul servizio freepbx così il nuovo IngressRoute può mirare; il coperchio è su hostNetwork in modo che questa mappa per porto dell'ospite k1m1 8089. - ingressroute-ws.yaml: HostRegexp + PathPrefix(/ws) alla priorità 100 percorsi WebSocket aggiorna a freepbx:8089 *senza* la catena kamo-middlewares — che la catena include la compressione, che avrebbe corrotto i frame SIP-over-WS.
· SecurityService
Aggiungi /names endpoint di ritorno id→ nome per tutti i membri indipendentemente dallo stato
I filtri endpoint di by-department per il solo TeamMembers attivo, ma l'estensione assegnazioni possono fare riferimento ai membri di base o ai membri inattivi. Uso / nomi per ID→noma risoluzione in cui la copertura conta più dello stato di attività.
· kamo-internal
Aggiungi modulo di piombo a /leads/new
Refactor Aggiungi Piombo da un pannello multi-tab in una rotta dedicata a /leads/new quindi può essere collegato direttamente. Il mercato attuale è passato attraverso come ?marketId= e pre-selezionato. Mercato di piombo, venditore e prodotto sono ora necessari; il contatto richiede almeno uno dei primi/ultimo/preferito nome e uno di e-mail o telefono. Mortgage campi sottotipo e qualsiasi mercato campi di forma personalizzata contrassegnati èDisplayOnIntake sono resi in linea. Su successo, reindirizza a /leads/view/{id}.
· SecurityService
Aggiunga... punto
Resi venditeTipo, subTipo, e personalizzatiForms per un mercato da marketId così il modulo Aggiungi piombo può rendere i campi sottotipo e l'assunzione di moduli personalizzati senza prima creare una pista.
· kamo-internal
Aggiungi Display su Intake toggle, sbloccare automaticamente quando necessario è abilitato
· kamo-internal
Aggiungi isDisplayOnIntake ai tipi FormField TypeScript
· kamo-shared-library
Coerce isDisplayOnIntake=true quando è necessario=true in CustomFormService
· kamo-shared-library
Aggiungi isDisplayOnIntake per creare/aggiornamento richiesta DTO
· kamo-shared-library
Expose isDisplayOnIntake in FormFieldDTO
· kamo-shared-library
Aggiungi la colonna IS DISPLAY ON INTAKE a FormField entità
· kamo-internal
Collegare il nome del membro assegnato alla pagina delle impostazioni del telefono
· kamo-internal
Aggiungi la visualizzazione dei nomi dei membri e unssign pulsante per la scheda di estensioni per-instance
· kamo-internal
Mostra i nomi dei membri e aggiungi un'azione Unassign alla scheda estensioni di livello org
· kamo-internal
Configurazione del cavo VOIP per provider + selettori di estensione con l'esecuzione dell'assegnazione
· kamo-internal
Aggiungere DTO digitati, metodo API senza firma e aggiornare MembershipPermissionsTab VOIP tipi
· VOIPService
Aggiungi l'assegnazione del DELETE endpoint a VoipExtensionsController per admin unassign
· VOIPService
Aggiungi MemberVoipConfigController per il membro VOIP config con l'assegnazione dell'estensione
· kamo-shared-library
Aggiungi i metodi di query findByAssignedMemberId a PhoneExtensionRepository
· kamo-internal
Persist casella di posta attiva nei param di query dell'URL
Cambiare le caselle di posta aggiorna l'URL (?mailboxType, ?mailboxId, ?mailbox) così rinfrescante il browser ripristina la stessa casella di posta. MessageBrowser legge window.location.search nel suo pizzico usoAprimizzatoreState per ripristinare activeMailbox prima del primo render, e spinge gli aggiornamenti URL tramite router.sostituisci su ogni evento di scambio di mailbox. CartellaSidebar legge il stesso URL params dopo ottenereAccessibleMailboxes risolve così il dropdown riflette la selezione restaurata.
· kamo-marketing
Add Flowroute to integrations hub page

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