Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-internal
Extensie VOIP click în Centrul de Interacţiuni deschide softphone cu număr preumplut
· VOIPService
Sincronizare TeamMember phoneExtensie de lucru pe VOIP config salvează
· SecurityService
Backfill TeamMember phoneExtensie de lucru de la MemberVoipConfig la pornire
· kamo-internal
Caracteristicile apelului prin fir setări de la un capăt la altul prin abstractizarea furnizorului
- voipApi: adauga CallFeaturesDto type, getCallFeatures() and setCallFeatures() API calls - utilizaţi Softphone: adăugaţi ******************* starea încărcată de la API la pornire; setCallForward/setAutoRăspunsul persistă prin API; răspuns automat și efectele de apel-forward declanșează apelurile de intrare atunci când funcțiile sunt active - SoftphonePanel: elimina starea de funcţionalitate a apelului exclusiv local; fir Call Forward comutaţi şi numărul de intrare în contextul softphone; fir de răspuns automat comuta la contextul softphone; redenumește butonul de navigare la 'Manage Extended A/V Configurări - Audio slider sincronizarea a fost deja funcţională prin utilizarea AVSettings autobuz eveniment
· VOIPService
Adaugă caracteristicile apelului API
- Adăugaţi CallFeaturesDto şi SetCallFeaturesRequest POJOS - Adăugaţi apel Indicatoare Forward/AutoRăspuns către FurnizorCapabilităţi - Adăugați implicit getCallFeatures/setCallFeatures to PhoneProvider interface - RingCentral: implementeaza prin intermediul regulilor de raspuns REST API (NeconditionalForwarding) - FreePBX: implementa prin GraphQL adddCallforce mutation - CallFeaturesController: GET/PUT /api/voip/calls/fetures
· kamo-shared-library
Adăugați entitatea MemberCallFeatures și depozitul pentru preferințele de apelare și răspuns automat
· kamo-asterisk-support
Angajare iniţială
Ceasuri ***************** pentru înregistrări WAV terminate, grupuri multi-picioare picioare apel de Asterisc UNIQUEID, și încarcă fiecare lot la APIService /api/voip/recording/upload using a VOIP RECORDING UPLOADS-scoped Cheia API. Fișierele sunt șterse de pe disc numai după ce platforma confirmă stocarea. Bootstrap idepotently provides a AMI user via manager custom.conf and instalează MixMonitor() cârlige per canal prin extensii custom.conf, apoi cere Asterisk să reîncărcați modulele sale dialplan/manager. Ambele blocuri gestionate sunt înconjurate de bannere marcate clar astfel admin personalizări supraviețui. Include Dockerfile, K8s manifests pentru k1m1 și k2m1 (Angajare + ConfigMap + Şablon secret), ***************** oglindind restul a platformei, precum și o non-tehnică README.txt pentru gazde standalone FreePBX.
· kamo-internal
Stencils
- APIManager: opţiune nouă VOIP RECORDING UPLOADS (utilizată de kamo-asterisk-support pe FreePBX gazde pentru a încărca mesajele vocale și înregistrările apelurilor prin intermediul APIService). - VoipSmsTab: noua carte "Recording Pipeline" cu patru contoare (voicemail-uri la proces, apeluri pentru a procesa, mesaje vocale în eroare, apeluri în eroare) La fiecare 30 de ani, foloseste *************** "Înregistrare nouă" Procesare" card cu voipVmBatchSize / voipCallBatchSize / voippollSeconds tonibles. - sistemConfigApi: extinde actualizarea() pentru a trimite noile tonibles; adaugă înregistrareaStats(). - tipuri/telefon: SystemConfiguration Dto câştigă cele trei tonible noi; VoipRecordingStatsDto a adăugat.
· SecurityService
Statistici de înregistrare sistem-config + tontoble de prelucrare de înregistrare
- GET *************** întoarce cele patru contoare expuse pe configurările kamo-interne → Platformă → Configurare → VoIP/SMS tab (vmPending, callPending, vmError, callError). - Put /api/security/system-config acceptă acum voipVmBatchSize, voipCallBatchSize, VoipPollSeconds for DaemonService recording-procesor tonobles. - toDto() include noile câmpuri astfel încât frontend-ul să le poată citi înapoi.
· DaemonService
ÎnregistrareProcessorJob + NATS scurtătură pentru upload-uri proaspete
- Nou loc de muncă Quartz înregistrareProcessorJob căpușe fiecare minut, dispensează independent VM și loturi de apel în același timp cu serviciul de conversie - Nu. Folosind ************* VoipCallBatchSize} ca capace. - Înregistrare nouăReceptedConsumer subscrie la voip.recording.recepted NATS subject emis de ConversionService pe upload-uri proaspete și declanșează o rulare imediată, așa că o înregistrare în stadiu proaspăt începe procesarea în câteva secunde, mai degrabă decât de așteptare privind sondajul periodic. - Configmap expune daemon.jobs.recordings.cron și Vorbeşte cu mine.
· ConversionService
Conductă de prelucrare a înregistrării + FFmpeg
- Nou *************** Etape finale de încărcare multipart Transmite APIservice în minio găleată *************** şi creează un rând de aşteptare neprocesat. Ipotent privind retările utilizare (telefonServerId, asteriscUniqueId). - Nou ************* (numit de DaemonService) drenează rânduri: descarcă WAV-uri înscenate, amestecă picioarele într-un singur Opus/WebM master via FFmpeg amix, transcodes per-canal WAVs as tracks alaturi de master, și încarcă prin Serviciul de înregistrareImaging cu VM RECORDING (8) / Call recording (9) ImageAssocType. - Noul ambalaj Ffmpegservice (transcodeToOpusWebm / mixToOpusWebm) cu timeout şi curăţarea fişierelor. - Editorul NATS emite voip.recording.recepted on every staged upload so DaemonService poate scurta sondajul periodic. - Dockerfile instaleaza ffmpeg in etapa de rulare (nave Alpine ffmpeg libopus în mod implicit). - ConfigMap expune Nu-ţi face griji. (servicii încrucișate partajate) secret de apel intern) astfel încât noile obiective să poată autentifica APIService și Daemonservice apelers.
· APIService
VoipRecordingUploadController pentru upload-uri de suport kamo-asterisk
Post/api/voip/înregistrări/upload acceptă corpuri multiple de suport kamo-asterisk rulează pe gazde FreePBX. Validarea X-Api-Key are noul VOIP RECORDING UPLOADS domeniu de aplicare (re-folosind ************* cache de validare), apoi transmite antetele de încărcare utilă multipart + metadate (X-Phone-Server-Id; X-Asterisk-Unique-Id, X-Recording-Kind, X-Primary-Extensie) la TransformationService Nu-ţi face griji
· kamo-shared-library
Inregistrare neprocesata a starii, piese de cale ImgDat, inregistrare serviciu de imagistica
- Fix ImageAssocType ID coliziune: VM RECORDING=8, CALL RECORDING=9 (au fost ambele Duplicarea MY DOCS la 4). - Adăugaţi ************* astfel încât o înregistrare master poate transporta pe-canal Opus/WebM piese alături de conceptul de miniatură existentă. - Adăugaţi ImageMimeType.AUDIO WEBM (audio/webm) pentru containerele Opus-in-WebM produse de conducta de conversie. - Noua înregistrare neprocesată (UIID id, IS VM, PHONE SERVER ID, EXTINS, ASERISK UNIQUE ID, IS PROCESSED, IS ERROR, ERROR Message, RED IMG ID, DATE CREATE, DATE PROCESED) ENTITATEA DE ÎNREGISTRARE + DESCRIERE PENTRU kamo-asterisk-support → TransformationService → Conductă DaemonService. - Noua înregistrareImagine Serviciul care încarcă un maestru Opus/WebM la imagistică cu piese per-canal Opus/WebM atașate prin ImgDat.trackCount. - Configurație sistem: adăugați voipVmBatchSize / voipCallBatchSize / voippollSeconds pentru tonobles de înregistrare DaemonService.
· kamo-asterisk-support
Angajare iniţială
Ceasuri ***************** pentru înregistrări WAV terminate, grupuri multi-picioare picioare apel de Asterisc UNIQUEID, și încarcă fiecare lot la APIService /api/voip/recording/upload using a VOIP RECORDING UPLOADS-scoped Cheia API. Fișierele sunt șterse de pe disc numai după ce platforma confirmă stocarea. Bootstrap idepotently provides a AMI user via manager custom.conf and instalează MixMonitor() cârlige per canal prin extensii custom.conf, apoi cere Asterisk să reîncărcați modulele sale dialplan/manager. Ambele blocuri gestionate sunt înconjurate de bannere marcate clar astfel admin personalizări supraviețui. Include Dockerfile, K8s manifests pentru k1m1 și k2m1 (Angajare + ConfigMap + Şablon secret), ***************** oglindind restul a platformei, precum și o non-tehnică README.txt pentru gazde standalone FreePBX.
· kamo-internal
Înlocuiește fila de contacte simulate cu SoftphoneContacte complete
Extrage o noua componenta SoftphoneContacteaza care fir contactele softphone fila la contactele reale API prin utilizareaContacte(). Înlocuiește 4 hardcoded mock contacte cu date live din toate cărțile de contact. Caracteristici: - Rezervă şi grup pastile filtru cu selectoare dropdown - Căutare anulată, sortată după nume - Iniţialele avatar codate în culori (hash deterministic), suport foto - Lista de contact cu butonul de apel rapid hover-reveal - Vedere de detaliu (lista de locatii) aratand telefoane, emailuri, org, note - Modul de editare Inline pentru toate câmpurile (telefoane/emailuri multi-valoare cu adăugare/eliminare) - Șterge contactul cu etapa de confirmare - Stare scheletică goală și de încărcare - "Nou contact" naviga la /contacts? acţiune=creare Actualizează contactele/page.tsx pentru a deschide automat dialogul de creare atunci când ?action=create interogare param este prezent (utilizat de butonul softphone "New").
· kamo-internal
Înlocuieşte extensia Chip cu textul inline lângă rolul în Centrul de Interacţiuni
· kamo-internal
Eliminați câmpul de extensie manuală a telefonului; scrieți extensia VOIP prin intermediul serviciului de securitate pe salvare
· SecurityService
Includeţi extensia de telefonWork în răspunsul de la departament; acceptaţi telefonWorkExtensie pe membru PUT
· kamo-shared-library
Adaugă *************** ajutor la EchipaMember
· kamo-internal
Wire VAD + push-to-talk; eliminați setările inoperabile
- vadEnabled trece acum ca voceActivityDetection in buildAudioconstrains so browser-ul onorează comuta la deschiderea microfonului pentru un apel - impingeToalk auto-muteaza microfonul la apel accepta si instala cheia jos / cheie ascultătorii care unmut în timp ce hotkey configurat este ținut - Setări eliminate care nu aveau cabluri funcţionale şi nu pot fi implementate prin intermediul browser-ului standard WebRTC API: micGain (fără GainNode în conducta SIP); HighPassFilter, zgomotGate, vadThreshold, hdVoice, cameraBackgroundBlur (necesită ML), cameraBrightness/cameraContrast (numai previzualizarea CSS) - interfata AVSettings curatata si DEFAULT AV SETTINGS corespunzator; reechilibrarea rețelelor după îndepărtarea
· kamo-internal
Lista tonurilor de apel scrollable cu filtru de căutare
Face panoul de catalog ton de apel se potrivesc înălțimea coloanei din dreapta și defilare vertical atunci când lista se revarsă, astfel încât membrii pot naviga ca mai multe tonuri se adaugă. Adaugă un câmp de căutare care filtrează prin etichetă sau nume de fișier, cu un buton clar și un mesaj de stare goală.
· kamo-internal
Adaugă încă şapte tonuri de apel în catalog
Adaugă Battleship Horn, Demon Horn, Land Line, 1985 Ring, Office Phone, Sună telefonul vechi, și Olé sub / publice / sunete / tonuri de apel / și fire le în RINGTONE CATALOG astfel încât acestea să apară alături de existente Implicit / Sci-Fi / Buzzer / Opţiuni silenţioase pe subtabul Ringtones.
· kamo-internal
Adaugă tonuri de apel Sci-Fi și Buzzer în catalog
Drops două active noi ton de apel sub /public/sonete/tone de apel / și le înregistrează în RINGTONE CATALOG astfel încât acestea să apară în Ringtones subtab și poate fi setat ca tonul implicit-incoming softphone.
· kamo-internal
Layout audio trei coloane, drop-banner salvat, lățimea de umplere
Lays Audio subtab out ca Microphone rândul complet pe ecranele Ig+ (md încă le perechi două-up, xs stive). ă Comutatoare avansate de card la un stiva verticala in interiorul coloanei sale mai inguste. Elimină traseul "Setări salvate automat" footer comportamentul este implicit și cardul a fost doar de a lua spațiu. Secţiunea ForţeCard panouri la lăţime: 100% şi adaugă alignItrems="stretch" la fiecare Grid subtab lui astfel încât cardurile umple întotdeauna coloana lor margine-la-edge.
· kamo-internal
Împarte setările AV în subtabe Audio/Video/Ringtones
Reorganizază fila Audio/Video în trei subtabe interne și pune fiecare pe orizontală astfel încât setările să se potrivească în cadrul viewportului fără Zidul defilării verticale am avut înainte. De asemenea, stabilește catalogul ton de apel la punctul la real /sounds/ringtone.mp3 activ în loc de căi fantomă sub /sounds/ringtones/, so previews and the always-on softphone session Împărţiţi un singur ton de apel canonic.
· kamo-internal
Adaugă tab-ul Audio / Video Setări și sârmă în softphone
Adaugă un magazin de preferințe AV per dispozitiv (localStorage, specific mașinilor, fără roaming) plus o filă completă pe /setări/membru/<id> pentru configurarea și testarea microfon, difuzor, sonerie, și aparat de fotografiat. Fereastra softphone instrument, redare ton de apel, și SIP SDK adaptoare acum onoare aceste setări live: rutare dispozitiv prin setSinkId, getUserMedia constrângeri (dispozitiveId + EC/NS/AGC/rata de eșantionare), volum de ton DTMF; dispozitiv ringer + selecție ton, mut-on-join, și notificări de birou.
· kamo-internal
Întotdeauna pe sesiune SIP cu auto-popup + ton de apel pe apelurile de intrare
Softphone-ul folosit pentru a înregistra doar în timp ce fereastra de instrumente popup a fost deschis Închide şi apelurile de intrare au fost pierdute în tăcere. Ridicați sesiunea într-o SoftphoneProvider montat la AutentifiedToolWrapper, deci SIP REGISTER este a avut loc în mod continuu în timp ce operatorul este semnat și orice INVITE intrare atrage atenţia operatorului. - app/hooks/useSoftphone.ts: redenumește cârligul de implementare la Utilizați Sesiunea Softphone pentru a consolida faptul că trebuie montat exact o dată pentru fiecare sesiune (deține acreditările SIP și REGISTRUL). - *******************SoftphoneProvider ruleaza sesiunea cârlig o dată, expune statul prin context, și reacționează la HasIncome Apel tranziții (Instanță unică, așa că doar se concentrează dacă deja deschis) cu ID apelant în titlul și joacă /sounds/ringtone.mp3 pe o buclă până la utilizator acceptă/rejectează/ telecomanda închide. Public useSoftphone() hook reading din context. - *************** comuta import la context. - ***************înveliţi arborele sculei cu SoftphoneProvider astfel încât sesiunea trăiește atâta timp cât starea auth. clasic NA cadence (440Hz + 480Hz, 2s on, 4s silence) so audio.loop=true produce un model natural de inel/pauză/ring. ~72 KB. Browser-urile pot bloca jocul iniţial () până când utilizatorul face gesturi pe pagina; operatorul a făcut clic de obicei cel puțin o dată la momentul unui apel Sosește, astfel încât aceasta este rareori o problemă în practică.
· KlusterServices
Seed pbx.k1.kluster.kamocrm.com ca domeniu static
Softphone-ul browser-ului are nevoie de SIP-over-WSS pentru a ateriza pe un nume de gazdă cu un real TLS Cert. Adăugați admin FreePBX / WS nume gazdă la STATIC DOMAINS astfel încât Auto-cert semănător dispoziții un per-host Să Cripteze certificat pentru ea necondiţionat în loc să se bazeze pe apariţia lui în jurnalele de acces ale lui Traefik. Odată ce certificatul este emis, calea temporară internă.kamocrm.com/voip-ws (angajat mai devreme ca un workaround) poate fi retras și softphone poate Utilizați URL-ul canonic pbx.k1.kluster.kamocrm.com/ws.
· kamo-register
Folosește numele scurt org și descrierea în capul HTML
Înlocuieşte logica titlu org-API cu site-ul config.json Titlul urmează acelaşi model ca şi celelalte site-uri: "Registru - {siteNameShort} ." Adaugă descrierea meta tag de la config.json. Elimină utilizarea neutilizatăTemaConfig import.
· kamo-login
Folosește numele scurt org și descrierea în capul HTML
DynamicMetaLoader setează acum document.title to "Login - {siteShort} " și scrie descrierea org în eticheta meta descriere. Static layout.tsx Fallback actualizat; eliminat hardcoded KamoCRM OG/Twitter metadate.

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit