Przejdź do treści
KAMOUniverse

Changelog

Co nowego.

Każde ulepszenie platformy, jak to wysyła.

  1. · VOIPService

    Synchronizuj rozszerzenie telefona TeamMemberWork na VOIP config save

  2. · SecurityService

    Backfill TeamMember phoneWork rozszerzenie od MemberVoipConfig w uruchomieniu

  3. · kamo-internal

    Wire call oferuje ustawienia end-to-end poprzez abstrakcję dostawcy

    - voipApi: dodaj CallFeaturesT type, getCallFeatures() i setCallFeatures() wywołania API - useSoftphone: dodaj ? stan załadowany Od API przy starcie; działaCallForward/set AutoAnswer utrzymuje się poprzez API; automatyczna odpowiedź I wyzwalanie efektów call-forward dla połączeń przychodzących, gdy funkcje są aktywne - SoftphonePanel: usunąć stan funkcji połączeń tylko na lokalny; przełączanie do przełączania i Wejście liczby do kontekstu softfonowego; przełączanie Automatyczny do kontekstu softphone; Zmiana nazwy przycisku nav na "Zarządzaj Extended A / V Ustawienia" - Synchronizacja suwaka audio była już funkcjonalna za pośrednictwem autobusu eventoweAVSettings — nie potrzeba zmian

  4. · VOIPService

    Add Funkcje połączeń API — zadzwoń do przodu + automatyczna przejmowanie przewodowo przez abstrakcję dostawcy

    - Dodaj CallFeaturesDto i SetCallFeaturesPProszenie POJOs - Dodawanie flag CallForward/autoswer do ProviderCapabilities - Dodawanie domyślne getCallFeatures/setCeatures do interfejsu PhoneProvider - RingCentral: zaimplementuj za pomocą Answering Rules REST API (UnconditionalForwarding) - FreePBX: zaimplementuj za pomocą mutacji GraphQL addCallforward - CallFaturesSAdministrator: GET/PUT /api/voip/calls/calls/Fatures — DB primary, dostawca-native sync

  5. · kamo-shared-library

    Dodaj MemberCallFeatures byt i repozytorium preferencji dotyczących połączeń forward i auto-spokajów

  6. · kamo-asterisk-support

    Początkowe zobowiązanie — FreePBX nagrywający (GO)

    Zegarki - dla zakończonych nagrań WAV, grupuje wielonogane nogi wywołania przez Asterisk UNIQUEID i przesyła każdą partię do APIService /api/voip/recordings/upload przy użyciu VOIP_RECORDING_UPLOADS-scoped Klucz API. Pliki są usuwane z dysku tylko po potwierdzeniu przechowywania przez platformę. Bootstrap idempotently rezerwuje użytkownika AMI za pośrednictwem manager_custom.conf i Instaluje MixMonitor() naczepy kanałowe za pośrednictwem extensions_custom.conf, a następnie Prowadzący Asterisk do ponownego załadowania modułów dialplanu/menedera. Oba zarządzane bloki Są otoczone wyraźnie oznaczonymi banerami, więc przetrwają dostosowania administratora. Zawiera Dockerfile, k8s manifesty dla k1m1 i k2m1 (Deployment + ConfilMap + Tajny szablon), - odzwierciedlając resztę Platforma i nietechniczny README.txt dla samodzielnych hostów FreePBX.

  7. · kamo-internal

    VOIP_RECORDING_UPLOADS zakres + liczniki/tunables

    - APIManager: nowa opcja VOIP_RECORDING_UPLOADS (używana przez kamo-asterisk-support Na FreePBX hostów przesyłanie poczty głosowej i nagrywania połączeń za pośrednictwem APIService). - VoipSmsTab: nowa karta "Recording Pipeline" z czterema licznikami (poczta głosy do Proces, połączenia do procesu, poczta głosowa w błędzie, połączenia w błędzie) — odświeża się Co 30 lat, używa ? New "Recording Przetwarzanie" Karta z voipVmBatchSize / voipCallBatchSize / voipPollPollSeconds Dostrajać. - systemConfigApi: wydłużyć update() aby wysłać nowe doprawy; dodaj nagrywanieStats(). - typy / telefon: SystemConfigurationDto zyskuje trzy nowe tunables; VoipRecordingStatsDto dodano.

  8. · SecurityService

    Statystyki nagrywania system-config + przetwarzanie do przeróbki dostrajania

    - GET - zwraca cztery liczniki Narażonych na Ustawieniach kamo-internal > Platforma ? Konfiguracja ? VoIP/SMS Zakładka (vmPending, callPending, vmError, callError). - PUT /api/security/system-config akceptuje teraz voipVmBatchSize, voipCallBatchSize, voipPollSeconds for DaemonService-dostorable do nagrywania. - toDto() zawiera nowe pola, dzięki czemu frontend może je odczytać z powrotem.

  9. · DaemonService

    RecordingProcessorJob + skrót NATS dla świeżych przesłanek

    - Nowa praca Quartz RecordingProcessorJob tyka co minutę, wysyłka jest niezależna VM i call partches jednocześnie do ConversionService Używanie "voipCallBatchSize" jako czapki. - Nowy RecordingReceivedKonsumer subskrybuje temat voip.recording.received NATS Wydawane przez ConversionService na świeżych przesłanych i uruchamia natychmiastowy bieg, więc O świeżo zainscenizowane nagranie rozpoczyna przetwarzanie w ciągu kilku sekund, a nie czeka W sprawie okresowego sondażu. - Configmap ujawnia demona daemon.jobs.recordings.cron i - To się mówi.

  10. · ConversionService

    Nagrywanie spożycia + rurociąg przetwarzania FFmpeg

    - Nowe - etapy punktów końcowych w przesyłaniu wieloczęściowych Przekierowywana przez APIService do wiadra MinIO I tworzy wiersz inscenizacji UnprocessedRecording. Idepotent na retries Używany (phoneServerId, asteriskUniqueId). - Nowy punkt końcowy (zwany przez DaemonService) Plotki odpływowe: pobiera inscenizowane WAV, miesza nogi call w jednym Opus / WebM Mistrz przez FFmpeg amix, kody transcedowe na kanałowe WAV jako ścieżki obok Master i przesyła przez RecordingImagingService z VM_RECORDING (8) / CALL_RECORDING (9) ImageAssocType. - Nowa owijarka FfmpegService (transcodeToOpusWebm / mixToOpusWebm) z timeoutem I sprzątanie tempfile. - Wydawca NATS emituje voip.recording.receeded na każdym inscenizowanym przesłaniu, więc DaemonService może skrócić okresowy sondaż. - Dockerfile instaluje ffmpeg w etapie runtime (alpine ffmpeg statki libopus domyślnie). - ConfigMap eksponuje - (wspólna usługa krzyżowa Internal-call secret), dzięki czemu nowe punkty końcowe mogą uwierzytelnić APIService i Osoby dzwoniające do DaemonService.

  11. · APIService

    VoipRecordingUploadStroller do przesyłania kamo-asterisk-support

    POST /api/voip/recording/upload akceptuje wieloczęściowe nadwozie z kamo-asterisk-support Bieganie na FreePBX hostów. Weryfikuje X-Api-Key nowy VOIP_RECORDING_UPLOS zakres (powtarzalny cache), następnie przesuń do nagłówków wieloczęściowych + metadanych (X-Phone-Server-Id, X-Asterisk-Unique-Id, X-Recording-Kind, X-Primary-Extension) do ConversionService - ;)

  12. · kamo-shared-library

    Nieprzetworzone Jednostka inscenizująca, ścieżki gąsienicowe ImgDat, usługa nagrywania obrazu

    - Napraw zderzenie z identyfikatorem ImageAssocType: VM_RECORDING-8, CALL_RECORDING ?9 (były obie) Powielanie MY_DOCS na 4). - Dodaj - aby nagranie główne może być przesunięte Nakanarz Opus/WebM podąża obok istniejącej koncepcji miniatury. - Dodaj ImageMimeType.AUDIO_WEBM (audio/webm) do pojemników Opus-in-WebM Wytwarzane przez rurociąg konwersji. - Nowe UnprocessedRecording (UID id, IS_VM, PHONE_SERVER_ID, EXTENSION, ASTERISK_UNIQUE_ID, IS_PROCESSED, IS_ERROR, ERROR_MESSAGE, RESULT_IMG_ID, Jednostka inscenizacyjna DATE_CREATED, DATE_PROCESSED) + repozytorium dla Kamo-asterisk-support - ConversionService - rurociąg DaemonService. - Nowa nagrywanieImagingService, która przesyła master Opus / Master na obrazowanie Z per-kanałowymi ścieżkami Opus / WbM zamocowanymi za pośrednictwem ImgDat.trackCount. - SystemKonfiguracja: dodaj voipVmBatZebiera / voipCallBatZGJA / voipPollSeconds Doprzewodowo przetwarzalnia nagrań DaemonService.

  13. · kamo-asterisk-support

    Początkowe zobowiązanie — FreePBX nagrywający (GO)

    Zegarki - dla zakończonych nagrań WAV, grupuje wielonogane nogi wywołania przez Asterisk UNIQUEID i przesyła każdą partię do APIService /api/voip/recordings/upload przy użyciu VOIP_RECORDING_UPLOADS-scoped Klucz API. Pliki są usuwane z dysku tylko po potwierdzeniu przechowywania przez platformę. Bootstrap idempotently rezerwuje użytkownika AMI za pośrednictwem manager_custom.conf i Instaluje MixMonitor() naczepy kanałowe za pośrednictwem extensions_custom.conf, a następnie Prowadzący Asterisk do ponownego załadowania modułów dialplanu/menedera. Oba zarządzane bloki Są otoczone wyraźnie oznaczonymi banerami, więc przetrwają dostosowania administratora. Zawiera Dockerfile, k8s manifesty dla k1m1 i k2m1 (Deployment + ConfilMap + Tajny szablon), - odzwierciedlając resztę Platforma i nietechniczny README.txt dla samodzielnych hostów FreePBX.

  14. · kamo-internal

    Zastąp makiety kontaktów z w pełni funkcjonalnymi SoftphoneKontakty

    Wyodrębnia nowy komponent SoftphoneKontakt, który przewodzi stykom softphonephone Za zakładka do API rzeczywistych kontaktów za pomocą useKontakt(). Zastępuje 4 hardkodowe makiety Kontakty z danymi na żywo ze wszystkich książek kontaktowych. Funkcje: - Pigmy filtrujące i grupowe z selekcjonerem rozwijanym - Debounced search, sort według ostatniej/pierwszej/pełnej nazwy - Kolorowe inicjały awatarowe (deterministyczny hash), obsługa zdjęć - Lista kontaktów z przyciskiem szybkiego dzwonienia do kowadników - Widok szczegółów (zastępuje lista) pokazujący telefony, e-maile, org, notatki - Tryb edycji Inline dla wszystkich pól (telefony/e-maile wielowartościowe z dodawaniem/usuwaniem) - Szuć kontakt z pytaniem potwierdzającym - Puste i załadunek stanów szkieletowych - "Nowy kontakt" nawiguje do /kontaktów?action Aktualizuje kontakty/page.tsx, aby automatycznie otworzyć okno dialogowe tworzenia, gdy ?action-create query param jest obecny (używany przez softphone "Nowy" przycisk).

  15. · kamo-internal

    Wymień rozszerzenie Chip z tekstem w linii obok roli w Centrum Interakcji

  16. · kamo-internal

    Usunąć ręczne pole rozszerzenia telefonu; zapisz rozszerzenie VOIP do SecurityService, aby zapisać

  17. · SecurityService

    Dołącz rozszerzenie phoneWork w odpowiedzi na departament; zaakceptuj telefon Praca Eksptensjon na członka PUT

  18. · kamo-shared-library

    Dodaj pomocników do TeamMember

  19. · kamo-internal

    Wire VAD + push-to-talk; usunąć niewdrożone ustawienia

    - vadEnabled teraz przechodzi jako głosAktywnośćZewnać w budceAudioKonstratnie tak przeglądarka honoruje przełącznik podczas otwierania mikrofonu na połączenie - pushToTalk auto-mutuje mikrofon przy połączeniu, akceptuj i instaluje keydown/keyup Słuchacze, którzy rozmyli się podczas skonfigurowanego klawisza hotkey - Usunięto ustawienia, które nie miały funkcjonalnego okablowania i nie mogą być zaimplementowane za pośrednictwem standardowej przeglądarki WebRTC API: micGain (no GainNode w rurociągu SIP), highPassFilter, noiseGate, vadThreshold, hdVoice, cameraBackgroundBlur (wymaga ML), cameraBrightness/cameraContrast (tylko podgląd CSS) - Wyczyszony interfejs AVSettings i odpowiednio DEFAULT_AV_SETTINGS; Zrównoważone siatki przełączające po usunięciu

  20. · kamo-internal

    Przewijana lista dzwonków z filtrem wyszukiwania

    Spraw, aby panel katalogu dzwonka pasował do prawej kolumny wysokości i przewijania Pionowo, gdy lista się przelewa, więc członkowie mogą nawigować jako więcej ton Są dodawane. Dodaje pole wyszukiwania, które filtruje według etykiety lub nazwy pliku, za pomocą Wyczyść przycisk i wiadomość o pustym stanie.

  21. · kamo-internal

    Dodaj jeszcze siedem dzwonków do katalogu

    Battleship Horn, Demon Horn, Linia lądowa, Pierścień 1985, Telefon biurowy, Dzwoniący stary telefon, a Ole pod /public/dźwięki/ringtony/ i przewody W RINGTONE_CATALOG tak, jak pojawiają się obok istniejących Domyślne / Sci-Fi / Brzęczyk / Silent opcje na podtapie dzwonków.

  22. · kamo-internal

    Dodaj dzwonki Sci-Fi i Buzzer do katalogu

    Zrzuca dwa nowe aktywa dzwonków w /public/sounds/ringtones/ i Rejestruje je w RINGTONE_CATALOG, aby pojawić się w dzwonkach Subtab i może być ustawiony jako domyślny dochodzący dźwięk softphone.

  23. · kamo-internal

    Trzykolumnowy układ audio, drop zapisany-baner, szerokość wypełnienia

    Układa subtab audio jako mikrofon | Głośnik | Zaawansowane w całym świecie Pełny rząd na ekranach lg+ (md nadal łączy je dwu-up, xs stacks). Natcharzeńc i w tym, powt., w tym, w tym, w tym, w tym, w tym, w tym, w tym, o., w tym, o., w tym, Zaawansowana karta przełącza się do pionowego stosu wewnątrz węższej kolumny. Usuwa ciągnięcie "Ustawienia zapisane automatycznie" - Zachowanie jest ukryte, a karta po prostu zabierała miejsce. Wymuśca sekcjaCard panele do szerokości: 100% i dodaje alignItems "stretch" Do każdej podtamnej siatki, więc karty zawsze wypełniają swoją kolumnę od krawędzi do krawędzi.

  24. · kamo-internal

    Podziel ustawienia AV na podtapiaczy Audio/Video/Ringtones

    Reorganizuje zakładkę Audio/Video na trzy wewnętrzne podtaby i układy Każdy pojedynek w poziomie, więc ustawienia pasują do widoku bez Ściana pionowego przewijania, którą mieliśmy wcześniej. Naprawia również katalog dzwonków, aby wskazać na rzeczywistość /dźwięki/ringtone.mp3 aktywa zamiast ścieżek fantomowych pod /dźwięki/ringtony/, więc podgląd i zawsze wertykalna sesja softfonowa Podziel się pojedynczym dzwonkiem kanonicznym.

  25. · kamo-internal

    Dodaj kartę audio / Video Settings i przewód do softphone

    Dodaje sklep z preferencjami AV na urządzenie (lokalneStorage, specyficzne dla maszyny, Nie roamingu) plus w pełni funkcyjna zakładka na /settings/member/-id> Konfiguracja i testowanie mikrofonu, głośnika, dzwonka i aparatu. Okno narzędzia do softfonu, odtwarzanie dzwonków i adaptery SIP SDK Wykorzyść te ustawienia na żywo: routing urządzenia za pomocą setSinkId, getUserMedia Ograniczenia (urządzenie + EC/NS/AGC/Czasowanie), objętość tonu DTMF, Urządzenie dzwonka + wybór tonu, powiadomienia o niemy i łączenie pulpitu.

  26. · kamo-internal

    Zawsze na sesję SIP z auto-popup + dzwonek na połączeniach przychodzących

    Miękkifon używany do rejestracji tylko wtedy, gdy okno narzędzia wyskakującego było otwarte - Zamknie go i połączenia przychodzące zostały po cichu pominięte. Podnieś sesję w a SoftphoneProvider zamontowany w AuthenticatedToolWrapper, więc SIP REGISTER jest Przetrzymywany w sposób ciągły, gdy operator jest podpisany i wszelkie INVITE Przyciągaj uwagę operatora. - aplikacja/hooki/useSoftphone.ts: zrename hak z implementacji na użyjSoftphoneSession, aby wzmocnić, że musi być dokładnie zamontowany raz na sesję (jest właścicielem poświadczeń SIP i REGISTER). - nowy SoftphoneProvider prowadzi sesję Hakuj raz, naraża stan poprzez kontekst i reaguje na hasinIncomingCall Przejścia — wyskakuje okno narzędzia softphone za pomocą narzędzia: Otwórz niestandardowe wydarzenie (jednorazowo-pojedynczo, więc po prostu skupia się, jeśli już jest otwarty) z identyfikatorem rozmówcy Tytuł, i odtwarza /dźwięk/ringtone.mp3 na pętli, aż do użytkownika Akcepty/odrzuceni/odległy się zawiesza. Publiczne użycieSoftphone() hak odczytuje Z kontekstu. - Przełącz import do kontekstu. - . owiń drzewo narzędziowe SoftphoneProvider, więc sesja żyje tak długo, jak stan auth. Klasyczna kadencja NA (440 Hz + 480Hz, 2s on, 4s silence) więc audio.loop?true Wydajność naturalnego pierścionka/pauza/pierścień. Nr 72 KB. Przeglądarki mogą blokować początkowe odtwarzanie() do momentu, gdy użytkownik będzie gestem Strona; operator zazwyczaj kliknął co najmniej raz, gdy połączenie się stało Przychodzi, więc rzadko jest to problem w praktyce.

  27. · KlusterServices

    Seed pbx.kluster.kamormm.com jako domena statyczna

    Bezkomfonowy telefon w przeglądarce potrzebuje SIP-over-WSS, aby wylądować na nazwach hosta z prawdziwym TLS cert. Dodaj nazwę hosta FreePBX / WS do STATIC_DOMAINS Auto-cert seeder Postanowienia per-host Let's Encrypt cert for it Bezwarunkowo zamiast polegać na nim pojawiających się w logach dostępu Traefik. Po wydaniu cert, tymczasowa ścieżka internal.kamorm.com/voip-ws (zaangażowany wcześniej jako obejście) może być wycofany, a softphone może być użyj kanonicznego pliku pbx.k1.kluster.kamormmmm.com/ws URL.

  28. · kamo-register

    Użyj krótkiej nazwy i opisu w głowicy HTML

    Zamień logikę tytułową opartą na org-API na stronie config.jsonNameShort więc the Tytuł jest zgodny z tym samym wzorem, co inne witryny: "Register - .siteNameShort". Dodaje metatagu opisu z config.json. Usuwa nieużywane użycieThemeConfig import.

  29. · kamo-login

    Użyj krótkiej nazwy i opisu w głowicy HTML

    DynamicMetaLoader teraz ustawia dokument.title to "Login - ?siteNameShort" I zapisuje opis orgu w tagu meta description. Static layout.tsx fallback zaktualizowany; usunięto zakodowane w twardym katmetadach KamoCRM OG/Twitter.

  30. · kamo-internal

    Użyj krótkiej nazwy i opisu w głowicy HTML

    DynamicMetaLoader teraz ustawia dokument.title do witrynyNameShort (był siteName) I zapisuje opis orgu w tagu meta opisu. Static layout.tsx fallback zaktualizowany do wartości ogólnych.

Twój wszechświat czeka.

Rozpocznij bezpłatnie w kilka minut.Dodaj produkty, kiedy tylko będziesz gotowy — bez migracji, bez nowych logowań.

Bezpłatne na zawsze — nie wymaga karty kredytowej