Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · SecurityService

    Suport nume/email/telefon Număr + criterii finale de gestionare a adresei

    - ContContController acceptă nume/email/telefon Număr JSON pe POST/PUT - Adresa iniţială de pe POST creează Shipping (şi BILLING atunci când utilizaţiAsBillingToo set), stabileşte indicii primare - Adăugaţi 5 criterii de evaluare a adresei: GET, POST, PUT, DELETE Adrese; PUS / Adrese / {id} / Primar - Rezumat cont/detalii expune numele obiect, telefonNumbers obiect, lista de adrese de expediere / facturare, indicii primare - Referinţe la nivel de cont (Cont.notes a fost eliminat mai devreme)

  2. · kamo-internal

    Istorie de producţie + taburi vocale cu instrument media-player

    Fila de istorie (SoftphoneIstoryTab.tsx): - sul infinit prin IntersectionObserver în interiorul containerului de sul al panoului - Cipuri de filtrare: Toate / Inbound / Outbound / Missed / Înregistrate - Înregistrarea pictogramă în acțiuni rând atunci când partea imagistică are un rând de înregistrare - Meniu de supraîncarcare per rând (Adauga la contacte) - Click-to-call back via actual dialpad Mesaj vocal (Softphone VoicemailTab.tsx): - Defilare infinită, filtrante (Toate / Necitite / Are audio) - Per-row Play / Call back / More actions - Auto-mark-read pe joc - Dialog de ştergere 2 opţiuni: Archive (soft-ascunde, toţi utilizatorii) vs Permanent sterge (gated by VOIP VOICEMAIL PERMANENT DELETE right; falls back to disable state for users without it) - Buton Mark-toate-citite cu nr-op-atunci când-zero posibilitatea Instrument popup MediaPlayer Nu-ţi face griji. - Audio: scrubber sintetic, click-to-seek, Replay10/Forward10, rata de redare (0,5x-2x), buclă, volum + mut, dispozitiv de ieșire onorat din setările AV - Video: viewport conţinut, PiP, fullscreen, acelaşi epurator + comenzi - Selector multi-track pentru inregistrari de apel (master + fiecare picior per-canal) - Descărcare - Două moduri sursă: VoipApi înregistrare (call/VM) sau activ imagistic de imgId - Inregistrat in instrumente/registrari/ inregistrari.ts ca multi-intensanta Cârlig + instalații sanitare: - utilizeaza Softphone expune istoria paginata + mesaje vocale (loadMore, hasMore, isLoading) si actiuni arhiva/permanent-delete - VoipApi câștigă lookupRecordings, getRecordingMetadata, arhivaVoicemail, paginate get Voicemails - /api/voip proxy pass audio/video/octet-stream bodys through with ********** intact (no tamponing) so media elements scrub - Nou *************** înainte la noul obiectiv de streaming Docsservice cu Range - VOIP VOICEMAIL PERMANENT DELETE adaugat in registrul RolRighttip frontend, asa ca verificati portile drepte UI sterge

  3. · InitializerService

    Migration runner for Recording provider-lookup columns + VM archive columns

    Adds recordINGS. provider istance id (UUID) and provider extern id (VARCHAR(64)))) plus the compound idx recordings preferer lookup index used by the softphone History tab's block lookup end. De asemenea, adaugă PHONE VOICEMAIL.is archived + date archived pentru noul flux soft-archive. Şterge orice rânduri pre-existente DE ÎNREGISTRARE / ÎNREGISTRARE EXTS în aceeaşi trecere Comanda 35 .

  4. · ConversionService

    Furnizor Persist CONTRACTEId + furnizorExternId on Recording at inger

    Suportul pentru asteriscuri X-Phone-Server-Id și X-Asterisk-Unique-Id (deja în NeprocesatRecording) pe noile Câmpuri de înregistrareMetadata astfel încât rândurile de apel/vocemail în sistemul de imagistica transporta cheia se alăture înapoi la rândul furnizor sursă. Pentru mesajele vocale, ajutorul trimite numele de bază al fişierului brut (de exemplu, msg0000); dezbrăcăm prefixul Msg şi conduce zerourile astfel încât cheia stocată să se potrivească cu mesajul REST API al lui FreePBX.

  5. · DocsService

    Adaugă ***************** cu suport HTTP Range

    Obiectiv generic de streaming pentru activele imagistice audio/video, utilizat de instrumentul mediaPlayer kamo-intern. Reuse ImageService autorization (la fel ca /download/...) but flows with Accept-Ranges + Content-Range so media elements can scrub withoutload the full file.

  6. · VOIPService

    Redare înregistrare, arhivă vocală, mesagerie vocală paginată, îmbogăţire istorie

    - Înregistrarea nouă Controlor cu căutare în vrac, audio cu flux de gamă pentru piese master + per-canal, și metadate pentru fereastra instrument de media-player - CallController.getCallIstory / get Voicemails îmbogățește fiecare rând cu înregistrare imagisticăId prin intermediul noului RecordingLookupStail - TelefonProvider.get Voicemail-uri acum ia (membru, pagină, dimensiune); FreePBX paginates client-side de la o aduce, RingCentral folosește paging nativ, KamoPBX continuă să arunce Nu Supported - Soft-ascunde prin TelefonVoicemail.isArchived) și permanent-deșeu poarta de către VOIP VOICEMAIL PERMANENT DELETE - PhoneProvider câştiguri obţine INJRCId() astfel încât controlorii pot rezolva cheia pentru înregistrarea căutărilor fără un al doilea apel de fabrică

  7. · kamo-shared-library

    Chei de căutare furnizor pe înregistrare, arhiva de mesagerie vocală, flux gamă MinIO

    - Inregistrare: adauga furnizorul INCLUSIV + providerExternalId pentru aderarea furnizorilor call-history / voicemail inapoi la activele imagistice - TelefonVoicemail: adauga isArchived + dataArchived for soft-ascunde from softphone listings - RolRightType: adăugați VoIP VOICIMAIL PERMANENT DELETE (Porți de ștergere distructive; arhiva rămâne la dispoziția tuturor) - MiniOStorageService: adăugați openRange() + RangeStream astfel încât obiectivele audio/video pot onora HTTP Range - ÎnregistrareImagingService: fir provider id + extern id prin ÎnregistrareMetadata pe rândul de înregistrare la ingerare

  8. · kamo-internal

    Adăugați istoric fil

    - LeadHistoryPanel: bara de instrumente filtranta lipiciosa cu cautare desavarsita, *********** filtre, masa MUI cu paginatie, jetoane de evenimente codate color, rezolutie nume membru pentru domenii de atribuire/cont - leadsApi: getLeadHistory () and getLeadHistoryFilters () with full interogare-param support - LeadHistoryEntry, LeadHistoryActor, LeadHistoryFieldMeta, LeadHistoryPageResponse, LeadHistoryFiltersResponse types - Trasee proxy Next.js pentru *********** și /filtre - LeadViewClient fir pentru a face LeadHistoryPanel atunci când fila de istorie este activ

  9. · SecurityService

    Adaugă criteriile finale GET / {id}/istorie și / {id}/istorie/filtre

    Criteriul final de evaluare paginabil, filtrabil, care poate fi percheziționat, cu încărcare de actor pe loturi (fără N+1). Criteriul final al filtrelor returnează câmpuri diferite utilizate, toate câmpurile de înregistrare, actori diferiți și toate tipurile de evenimente. Toate criteriile de evaluare mutante trece acum membrul de apel ca actor la LeadHistoryService pentru atribuirea.

  10. · kamo-shared-library

    Adăugați jurnalul de audit al lead-istoric

    - LeadHistory entity (UUID PK, pur și simplu Long FKs - LeadHistoryEventType enum with human-reading etichete - LeadHistoryFieldRegistry: single source of truth for ~55 tracked Lead fields; adăugarea unui câmp este o linie - LeadFieldDescriptor record (cheie, etichetă, categorie, extractor) - LeadHistoryService: stapshot/diff conductle, *************** pageted+filtered findHistory, distinct Fields/Actors for filtrant dropdowns - LeadHistoryDTO cu ActorDTO cu cuib; toate ID-urile lungi serializate ca string pentru siguranța de precizie a CockroachDB JS - LeadService: history hooks on create, update, sterge, asignateLeadAccount, unassignLeadAccount

  11. · SecurityService

    Actor Wire LeadHistoryService urmărire în LeadController

  12. · kamo-internal

    Adăugaţi lead-cont cesiune UI, sistem valutar, pagini de cont noi, setări câmp valutar

  13. · SecurityService

    Adăugați criteriile de atribuire a contului de plumb, actualizați ContController pentru tipul de monedă

  14. · kamo-shared-library

    Adaugă monedaType enum, actualizează CountryType cu moneda primară, adaugă moneda în Cont/Organizație, adaugă asignarea contului de plumb în LeadService

  15. · kamo-internal

    Eticheta de tip pentru membri dinamici în titlul paginii contului meu

    Titlu acum se citește "Contul meu {Membru al echipei}" folosind org-configurat etichete de comportament, comutarea automat odată ce tipul de membru este încărcat.

  16. · kamo-internal

    Mută butonul Creare document în bara de instrumente DocManager

    Butonul a fost disponibil doar pe /doc/manager prin intermediul propunerii de acţiuni. Mutat toate logica (stat, handler, DOC TYPES, meniu) în DocManager astfel Apare în fiecare instanţă. Pagină simplificată.tsx la doar Fă-l pe DocManager fără nicio acţiune.

  17. · kamo-internal

    Mută adresa de mail în 3 coloane cu informații despre plumb și contact primar

  18. · kamo-internal

    Suport internaţional Câmp peste toate formele

    - Adăugaţi CountrySelect reutilizabil (207 ţări, pavilion icoane), LanguageSelect (26 limbi, pavilion icoane), SubdiviziuneField (statul SUA scade cu steaguri; alte țări arată câmpul de text etichetat) - Adăugaţi constante de ţară (ţări.ts, limbi.ts, noiStates.ts, fuse temporale.ts) - Lead view Detalii tab: per-card in-place editare cu *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - Formular de creare a plumbului: scaderi complete de tara/subdiviziune/zona temporala inlocuind liste de linii - Setări LabelManager: org limba implicită în secțiunea 8, CountrySelect+Subdivision Câmp în adresă - ContactInfoStep (retea creeaza vrajitor): TaraSelect+SubdivisionField inlocuind selectii limitate - MyCountTab: CountrySelect+SubdivisionField înlocuind câmpurile de text simple - tipuri/lides.ts: adăugaţi câmpuri de ţară şi subdiviziuni

  19. · kamo-shared-library

    Adăugaţi suport internaţional

    - CountryType: add PROVINCE NAMES set, isProvincie(), getSubdivisionLabel() - Organizare: adăugare limbă (LanguageType) domeniu - Lead: add country (CountryType), compartimentation (String), timezone (TimezoneType) fields - ******************* adauga tara, compartimentarea, fusul orar Câmpurile string - LeadService.createLead: se ocupă de noi domenii; limba implicită+țară din setările org - LeadService.updateLead: se ocupe de noi domenii - ***************** adaugă limba atins handler cheie

  20. · kamo-internal

    ASSEN LEADS dreapta, agent filtru opțiune nealocată, grilă coloană de curățare

    - Opțiunea de filtrare a agentului 'Paduri nealocate' în spatele ASSEN LEADS dreapta - "Toate pistele" exclude pistele nealocate pentru membrii fără drept - Eliminați Street, Produs, Coloane sursă; eliminați dropdown-urile filtrului de produse/surse - Elimină coloana Companiei; Coloana de contact arată numele companiei, revine la numele de contact - Coloana Vânzător arată tip instrument cu produs - Date coloane picătură prefix de zi lucrătoare, micșora de la 170px la 140px - DateTimeDisplay: adăugați showWeekday prop (default fals)

  21. · kamo-shared-library

    Adaugă dreapta ASSIGN LEADS (ID 137) la secțiunea CRM

  22. · kamo-internal

    Adaugă Assign Secţiunea "Piaţă şi alocare" pe /lide/noi

    - Fetches membri ai echipei active de la *************** pe munte - Membrii grupurilor dupa departamente cu departamente si membri sortate alfabetic - Formatează numele ca "Last, First"; prima opțiune este "Auto Assign / Unasigned" - Câmpuri de secţiune pentru comenzi: Lead Market, Assign To, Cel mai bun timp pentru contact, Vendor, Produs, Prospect Tip (toate lg=4) - Fixes leadsApi.ts pentru a trimite atribuiteTeamMemberId în loc de câmpul de utilizare atribuit mort - Adăugați atribuitTeamMemberId la tipul de plumb

  23. · kamo-asterisk-support

    Emit recordedAt + per-file extension in upload manifest

    - Watcher: every emitted Recording carries RecordedAt, derived from the EPOCH segment of our managed **************** filename, falling back to file mtime for voicemail / legacy files. - Grouper: CallBatch now tracks FileExtensions[] (one per file, parallel to Files[]) and the batch's overall RecordedAt (earliest leg start). Sort key for legs is RecordedAt with FinalizedAt as tiebreaker so the master leg is deterministic. - Uploader: manifest now includes top-level recordedAt and per-file extension. ConversionService consumes both to write the Recording (date_recorded, length from ffprobe) and per-leg RecordingExt rows.

  24. · ConversionService

    Pass Inregistrarea metadatelor la imagistica

    - *************** rulează ffprobe -show entries format=durate pe maestrul Opus/WebM, întoarce ms. 0 = necunoscut (nu letal). - *****************acum: * ruleaza SondDurationMs pe maestru pentru a obtine lungimea de inregistrare; * parses the manifest (sent by kamo-asterisk-support) for recordedAt și date de extensie/canal per fișier, care se încadrează înapoi la rândul de montare dataCreat și canal-nume parsing pentru sarcini utile mai vechi; * trece un *****************data inregistrata, LongMs, participantExtensii) la InregistrareImagingService astfel încât poate scrie noile rânduri de înregistrare + înregistrareExt.

  25. · kamo-shared-library

    Înregistrare + Entităţi de înregistrareExt, ÎnregistrareImagingService le scrie

    - noua entitate de înregistrare (UID id, IMG ID, IS MASTER, IS VM, EXTINS, MEMBRU ID, LENGTH, DATA RECORDED, DATA CREAT [DB-defaulted via @CreationTimestamp]]. Un rând per mesaj vocal finalizat sau înregistrarea apelurilor încărcate în imagine. - New RecordingExt entity (UUID id, Recording ID, Externation, Member ID, IS master). Un rând pe canal care a participat la înregistrare; Piciorul principal este marcat IS MASTER=adevărat, fiecare alt picior fals. - *************** acum ia o înregistrareMetadata pachet (telefonServerInvestmentId, dataRecorded, LongMs; participantExtensii) şi persistă înregistrare + înregistrareExt rânduri în aceeași tranzacție ca Img/ImgDat. memberId este rezolvată pe picior prin Nu-i aşa? VOIP instance de origine (null atunci când nealocat).

  26. · kamo-internal

    Actualizează cardurile de administrare a platformei pentru a potrivi structura fila unificată

    Înlocuiți cele două cărți vechi (Organizații pagina independent + Configurare) cu cinci carti care se potrivesc filelor reale: General, Organizatii, VOIP & SMS, Sistem Utilizator, şi Avansat .

  27. · kamo-internal

    Declanşator de sincronizare din fila avansată

    - Reproiectare fila VOIP & SMS pentru a utiliza lăţimea completă a zonei de conţinut: spaţiu statistici conducte rândul de sus, prelucrarea înregistrării și programul de sincronizare globală stau cot la cot într-o grilă cu două coloane la punctul de oprire lg+ - Carduri de stat de conducte arată numărul de live cu semne de verificare zero-stat și eroare codare culoare; auto-reîmprospătare fiecare 30 de ani notate în subtitrare - Cardul Global Sync consolidează setările programului, ultimul rând de timp Sync, și declanșare manuală într-un singur panou; cip activat/pauzat în antet - Mutați "Force global VOIP sincronizare" din fila avansat (duplicat de declanșare deja prezent pe VOIP & SMS); Tabula avansată arată acum textul locația

  28. · kamo-internal

    Combină organizațiile în pagina de configurare cu tab-ul unificat

    - Adaugă organizaţii ca filă în ************* (General · Organizații · VOIP & SMS · Utilizator sistem · Ordin avansat) - Şterge-o. - Update Platform Administration nav in SetăriStatusWindow pentru a lista toate cele 5 file ca sub-posturi care indică la configurare?tab=... - Fix layout pe toate filele: consistent p: {xs:2, sm:3} padding astfel încât conținutul nu mai curge în pereții cardului - Imbunatatiti cardurile de stat GeneralTab cu fundaluri de pictogramă și ritm de tipografie mai stricte - Actualizare SetăriView titlu/subtitrare pentru pagina unificată

  29. · kamo-marketing

    Add Go logo to BUILT WITH banner

  30. · kamo-internal

    Telefon de suprafaţă SERVER ID pe fila de imagine de ansamblu telefon-integrare

    Operatorii care configurează suport kamo-asterisk pe o gazdă FreePBX trebuie să lipească UUID-ul de potrivire VoipProvider în fișierul de configurare al ajutorului ca Telefon server id. Până acum au trebuit să grub prin bara URL sau Baza de date. Noua secțiune "Phone Server ID" privind /setări/fetures/phone/{id} imagine de ansamblu arată UUID într-un câmp monospațial numai pentru citire cu un singur clic buton copie (CopyableIdField ajutor, de asemenea, reutilizabil pentru viitor similare Identificatori).

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