Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· kamo-internal
Clickable VOIP ekstensi di Interaction Center membuka softphone dengan nomor yang telah ada sebelumnya
· VOIPService
Selaraskan ekstensi foneWork TeamMber pada config VOIP save
· SecurityService
Isi ulang fonem Timber dari MemVoipConfig pada startup
· kamo-internal
Pengaturan fitur panggilan wire end-to-end melalui operator abstraksi
- voipApi: tambahkan tipe CallFeaturesDto, getCallFeatures () dan setCallFeatures () API memanggil - usesoftphone: add * * * * * * * * * * * * * * * * * state loaded dari API pada startup; setCallForward / setAutoAnswers aksi bertahan melalui API; auto- jawaban dan call- efek maju pemicu pada panggilan masuk ketika fitur aktif - Softphone Panel: hapus local- hanya keadaan fitur panggilan; wire Call Forward toggle dan masukan nomor ke konteks softphone; transfer Otomatis Jawaban ke konteks softphone; ganti nama tombol nav ke 'Manage Extended A / V Selesai' - Penyelarasan slider audio telah berfungsi melalui bus event usuation - tidak ada perubahan yang diperlukan
· VOIPService
Tambahkan fitur panggilan API - panggil Maju + otomatis jawaban kabel melalui operator abstraksi
- Tambahkan CallFeaturesDto dan SetFeaturesRequest POJOs - Tambahkan flag callForward / autoRespon ke ProviderCapability - Tambahkan default getCallFeatures / setCallFeatures ke antar muka PhoneProvider - RingCentral: terimplementasi via Menjawab Aturan REST API (UnconditionalForwarding) - FreePBX: terimplementasi melalui GraphQL addCallforth mutasi - CallFeaturesController: GET / PUT / api / voip / calls / features - DB primary, provider-native sync
· kamo-shared-library
Tambahkan Entitas dan repositori Nama Anggota CallFeatures untuk panggilan ke depan dan preferensi jawaban otomatis
· kamo-asterisk-support
Commit awal - FreePBX merekam uploader (GO)
Watches * * * * * * * * * * * * * * * * untuk selesai rekaman WAV, grup multi- kaki memanggil kaki oleh Asterisk UNIQUEID, dan upload setiap batch ke APIService / api / voip / rekaman / upload menggunakan VOIP _ RECORDING _ UPLOADS-scoped Kunci API. Berkas dihapus dari disk hanya setelah platform menegaskan penyimpanan. Bootstrap secara idempotently ketentuan pengguna AMI melalui manajer _ gust.conf dan instals MixMonitor () per- channel pengait melalui ekstensi _ gust.conf, maka Meminta Asterisk untuk memuat ulang modul dialek / manajer. Kedua blok yang dikelola dikelilingi oleh spanduk yang jelas ditandai sehingga penyesuaian admin bertahan hidup. Termasuk Dockerfile, k8s memmanifestasikan untuk k1m1 dan k2m1 (Deploices + ConfigMap + Templat rahasia), * * * * * * * * * * * * * * * * cermin sisanya platform, dan tidak-teknis README.Txt untuk standalone FreopBX host.
· kamo-internal
VOIP _ RECORDING _ UPLOADS scope + record pipeline counter / tunables
- APIManager: VOIP _ RECORDING _ UPLOADS pilihan scope (digunakan oleh dukungan kamo-asterik- di FreePBX host untuk mengunggah pesan suara dan rekaman panggilan via APIService). - VoipSmssTab: kartu "Recording Pipeline" baru dengan empat counter (pesan suara ke proses, panggilan ke proses, pesan suara dalam kesalahan, panggilan dalam kesalahan) - menyegarkan Setiap 30-an, menggunakan Recording baru Proses "kartu dengan voipVmBatchSize / voipCallPBatchSize / voipPollSeconds tunables. - SystemConfigApi: perluas pembaruan () untuk mengirim tunnables baru; tambahkan catatan Stats (). - tipe / telepon: SystemConfigure Dto memperoleh tiga tunables baru; VoipRecordingStatesDto ditambahkan.
· SecurityService
Stat rekaman system--config + recording- pengolahan tunables
- GET * * * * * * * * * * * * * * * * mengembalikan keempat counter terekspos pada Pengaturan internal kamo- Brasero Platform (Konfigure) stringVoIP / SMS tab (vmPending, callpending, vmError, callError). - PUT / api / keamanan / sistem- config sekarang menerima voipVmBatchSize, voipCallBatchSize, voipPollSeconds for DaemonService recording-prosesor tunables. - toDto () termasuk bidang baru sehingga antarmuka dapat membaca mereka kembali.
· DaemonService
Rekaman Proses Tugas + NATS jalan pintas untuk uploads segar
- Pekerjaan baru Quartz Rekaman Proses kutu setiap menit, mengirimkan independen VM dan panggil batch konstant ke Layanan Percakapan * * * * * * * * * * * * * * * menggunakan * * * * * * * * * * * * * * voipCallBatchSize} sebagai huruf. - Recording Baru Menerima subsators Konsumer ke voip.recording.received perihal NATS Dikeluarkan oleh Layanan Percakapan pada upload segar dan memicu menjalankan langsung, jadi rekaman yang baru dipentaskan mulai diproses dalam hitungan detik daripada menunggu pada polling periodik. - Peta konfigurasi mengekspos daemon.jobs.recordings.cron dan * * * * * * * * * * * * * * * * itu berbicara.
· ConversionService
Merekam pipa pemrosesan tak masuk + FFmpeg
- Baru... titik akhir tahap multipart uploads diteruskan oleh APIService ke dalam ember MinIO * * * * * * * * * * * * * * * * (Dan demi angin yang bertiup dengan kencang) yang bertiup sangat kencang. Idempoten pada percobaan menggunakan (phoneServerId, asteriskUniqueId). - Baru * * * * * * * * * * * * * * * titik akhir (disebut oleh DaemonService) drain bars: download stayed WAVs, mixes call legs into a single Opus / WebM master via FFmpeg amix, transcode per- channel WAVs sebagai trek di samping Master, dan upload melalui Layanan Gambar Rekaman dengan VM _ RECORDING (8) / CALL _ RECORDING (9) ImageAsnose Type. - New FfmpegService wrapper (transcodeToOpusWebm / mixing ToOpusWebm) with timeout dan pembersihan tempfile. - Penerbit NAS memancarkan voik.recording.received pada setiap penunggah pentas sehingga Layanan DaemonService dapat mempersingkat jajak pendapat periodik. - Dockerfile installs ffmpeg in the runtime stage (alpine fmpeg ships libopus secara default). - Peta-konfigurasi mengekspos * * * * * * * * * * * * * * * (shared cross- service progreal- call rahasia) sehingga titik akhir baru dapat mengotorisasi APIService dan DaemonService penelepon.
· APIService
VoipRecordingUploadController untuk kamo- asteroid-support uploads
POST / api / voip / rekaman / upload menerima tubuh multipart dari dukungan kamo- asterisk- berjalan di FreePBX host. Validasi X-Api- Key memiliki VOIP _ RECORDING _ UPLOADS baru scope (re-using the * * * * * * * * * * * * * validation cache), then meneruskan multipart payload + metadata headers (X-Phone- Server- Id, X-Asterisk-Unique-Id, X-Recording-Kind, X- Primary- Ekstensi) ke Layanan Percakapan * * * * * * * * * * * * * * *
· kamo-shared-library
Entitas staging Recording yang belum selesai, trek trek ImgDat, layanan pencitraan rekaman
- Perbaiki tabrakan ID Tipe ImageAst: VM _ RECORDING = 8, CALL _ RECORDING = 9 (keduanya duplikasi MY _ DOCS at 4). - Tambahkan * * * * * * * * * * * * * * * sehingga rekaman master dapat membawa per-channel Opus / WebM trek di samping konsep thumbnail yang ada. - Tambahkan ImageMimeTypea.U.UVI _ WEBM (audio / webm) untuk kontainer Opus-in-WebM dihasilkan oleh pipeline konversi. - Recording Unreceived baru (UUID id, IS _ VM, PHONE _ SERVER _ ID, EXTENSI, ASTERISK _ UNIQUE _ ID, IS _ PROSED, IS _ ERROR, ERROR _ MESSAGE, RESULT _ IMG _ ID, DAE _ CREATED, DATE _ PROCESED) staging entity + repositori untuk kamo- asterisk- dukung pipeline dari ConversionService. - Gambar Rekaman Baru Layanan yang mengunggah master Opus / WebM master untuk pencitraan dengan jalur Opus / WebM yang dicantumkan melalui ImgDat.trackCount. - Konfigurasi SystemConfigure: tambahkan voipVmBatchSize / voipCallBatchSize / voipPollSeconds untuk DaemonService recording-prosesor tunables.
· kamo-asterisk-support
Commit awal - FreePBX merekam uploader (GO)
Watches * * * * * * * * * * * * * * * * untuk selesai rekaman WAV, grup multi- kaki memanggil kaki oleh Asterisk UNIQUEID, dan upload setiap batch ke APIService / api / voip / rekaman / upload menggunakan VOIP _ RECORDING _ UPLOADS-scoped Kunci API. Berkas dihapus dari disk hanya setelah platform menegaskan penyimpanan. Bootstrap secara idempotently ketentuan pengguna AMI melalui manajer _ gust.conf dan instals MixMonitor () per- channel pengait melalui ekstensi _ gust.conf, maka Meminta Asterisk untuk memuat ulang modul dialek / manajer. Kedua blok yang dikelola dikelilingi oleh spanduk yang jelas ditandai sehingga penyesuaian admin bertahan hidup. Termasuk Dockerfile, k8s memmanifestasikan untuk k1m1 dan k2m1 (Deploices + ConfigMap + Templat rahasia), * * * * * * * * * * * * * * * * cermin sisanya platform, dan tidak-teknis README.Txt untuk standalone FreopBX host.
· kamo-internal
Ganti tab kontak mengejek dengan fullly- fitur Kontak SoftphoneContacts
Mengekstrak komponen SoftphoneContacts baru yang menghubungkan kontak telepon lunak tab ke kontak nyata API melalui useContacts (). Mengganti 4 hardcode mock kontak dengan data hidup dari semua buku kontak. Fitur: - Pil filter grup dan buku dengan pemilih dropdown - Debounded search, sort by last / first / full name - Warna - kode avatar inisial (deterministik hash), dukungan foto - Daftar kontak dengan hover-reveal tombol panggilan cepat - Tampilan detail (replaces list) menampilkan ponsel, email, org, catatan - Mode penyuntingan inline bagi semua ruas (telepon / email multi- value dengan add / remove) - Hapus kontak dengan langkah konfirmasi - Kosong dan memuat keadaan kerangka - "Kontak baru" dari navigasinya ke / kontak? aksi = buat Memutakhirkan kontak / page.tsx ke auto- buka dialog pembuatan ketika ? action = make query param is present (used by the softphone "New" button).
· kamo-internal
Ganti ekstensi Chip dengan teks inline di sebelah peran di Interaction Center
· kamo-internal
Hapus daerah ekstensi telepon manual; tulis ekstensi VOIP melalui ke SecurityService pada simpan
· SecurityService
Sertakan ekstensi foneWork dalam respon departemen; terima ekstensi foneWorkExtension pada anggota PUT
· kamo-shared-library
Tambahkan pembantu ke Anggota Tim
· kamo-internal
Wire VAD + push-to-talk; hapus pengaturan tidak terimplementasi
- vadEnabled now passed as voices ActivityDetection in buildAudioConstraints so peramban menghormati toggle ketika membuka mic untuk panggilan - pushToTalk auto- mutes mic di call accept and installs keydown / keyup pendengar yang unmute ketika hotkey dikonfigurasi dipegang - Pengaturan pindah yang tidak memiliki fungsional kabel dan tidak dapat diimplementasikan via standar browser WebRTC APIs: micGain (tidak ada GainNode dalam pipa SIP), HighPassFilter, noiseGate, vadThreshold, hdVoice, KameraBackGroundBlur (Memerlukan ML), kamera / kamera Contrast (hanya pratinjau CSS) - Membersihkan antarmuka AVSettings dan DEFAULT _ AV _ SETTINGS sesuai; rebalanced toggle grid setelah pemindahan
· kamo-internal
Daftar ringtone dengan filter pencarian
Buat panel katalog nada dering cocok dengan tinggi dan gulungan kolom kanan vertikal ketika daftar overflow, sehingga anggota dapat menavigasi sebagai nada lebih ditambahkan. Tambahkan ruas pencarian yang menyaring berdasarkan label atau nama berkas, dengan hapus tombol dan pesan keadaan kosong.
· kamo-internal
Tambahkan tujuh nada dering lagi ke katalog
Adds Battlehip Horn, Demon Horn, Land Line, 1985 Ring, Office Phone, Dering Old Phone, dan Olé di bawah / publik / suara / nada dering / dan kabel mereka ke RINGTONE _ CATALOG sehingga mereka muncul bersama yang ada Pilihan baku / Sci-Fi / Buzzer / Silent pada subtab Ringtones.
· kamo-internal
Tambahkan nada dering Sci- Fi dan Buzzer ke katalog
Menjatuhkan dua aset nada dering baru di bawah / publik / suara / nada dering / dan register mereka dalam RINGTONE _ CATALOG sehingga mereka muncul dalam Ringtones subtab dan dapat diset sebagai nada softphone yang masuk.
· kamo-internal
Tiga-kolom tata letak audio, drop saved- banner, isi lebar
Lays yang subtab Audio keluar sebagai Mikrofon 124; Speaker 124; Lanjutan di baris penuh pada layar lg + (md masih pasangan mereka dua- up, xs tumpukan). The Advanced card switch to a vertical stack inside its snarwer kolomnya. Hapus jejak "Pengaturan disimpan secara otomatis" footer - perilaku implisit dan kartu itu hanya mengambil ruang. Paksa panel sectionCard ke lebar: 100% dan menambah alignItems = "stretch" untuk setiap jaringan subtab jadi kartu selalu mengisi kolom mereka edge- to-edge.
· kamo-internal
Pecah pengaturan AV ke Tabungan Audio / Video / Ringtones
Mengatur ulang tab Audio / Video menjadi tiga subtab internal dan meletakkan masing-masing keluar horisontal sehingga pengaturan cocok dalam viewport tanpa Dinding scrolling vertikal kami sebelumnya. Juga memperbaiki katalog ringtone ke titik di real / suara / ringtone.mp3 aset daripada jalur phantom di bawah / suara / nada dering /, jadi pratilik dan selalu-pada sesi softphone berbagi ringtone kanonikal tunggal.
· kamo-internal
Tambahkan tab Pengaturan Audio / Video dan kawat ke softphone
Menambahkan toko preferensi per- perangkat AV (LocalStorage, mesin - spesifik, tidak roaming) plus sebuah tab fully-featured pada / settings / anggota / < id > untuk konfigurasi dan pengujian mikrofon, speaker, dering, dan kamera. Jendela perkakas softphone, putar nada dering, dan adaptor SIP SDK sekarang menghormati pengaturan ini hidup: perangkat routing melalui setSinkId, getUserMedia batasan (deviceId + EC / NS / AGC / sample rate), volume nada DTMF, ringer perangkat + pilihan nada, mute- on- join, dan pemberitahuan desktop.
· kamo-internal
Selalu - pada sesi SIP dengan auto- popup + ringtone pada inbound panggilan
Softphone yang dipakai untuk mendaftar hanya ketika jendela perangkat popup terbuka - Tutup dan inbound panggilan diam-diam terjawab. Angkat sesi ke dalam SoftphoneProvider dipasang di AutencatedToolWrapper, sehingga SIP REGISTER adalah Ditahan terus sementara operator ditandatangani dan setiap inbound INVITE mendapatkan perhatian operator. - app / hook / useSoftphone.ts: ganti nama hook implementasi ke usesoftphonesession untuk memperkuat bahwa itu harus dipasang tepat sekali per sesi (itu memiliki SIP kredensial dan REGISTER). - * * * * * * * * * * * * * * SoftphoneProvider baru menjalankan sesi kaitkan sekali, mengekspos negara melalui konteks, dan bereaksi terhadap gangguan Call transisi - membuka jendela perkakas softphone melalui suatu alat: membuka acara gubahan (Single- instance, so it just focuuses if already open) with caller ID in judul, dan memainkan / suara / ringtone.mp3 pada loop sampai pengguna penerimaan / menolak / remote ditutup. Pengguna telepon umum () dibaca hook dari konteks. - * * * * * * * * * * * * * * * switch impor ke konteks. - * * * * * * * * * * * * * * * bungkus pohon alat dengan SoftphoneProvider sehingga sesi hidup selama negara auth. classic NA cadence (440Hz + 480Hz, 2s on, 4s silence) so audio.loop = true menghasilkan pola cincin / jeda / cincin alami. - 72 KB. Peramban mungkin memblokir pemutaran awal () sampai pengguna mendapat nilai pada halaman; operator biasanya mengklik setidaknya sekali pada saat panggilan tiba, jadi ini jarang menjadi masalah dalam praktek.
· KlusterServices
Benih pbx.k1.kluster.kamocrm.com sebagai domain statis
Softphone peramban membutuhkan SIP-over-WSS untuk mendarat di hostname dengan real Cert TLS. Tambahkan admin FreePBX / WS nama host ke STATIC _ DOMAINS sehingga Pencari sertifikat otomatis ketentuan per- host Mari kita Encrypt cert untuk itu bukannya bergantung pada itu muncul dalam log akses Traefik. Setelah cert dikeluarkan, sementara jalan internall.kamocrm.com / voip- ws (berkomitmen sebelumnya sebagai jalan memutar) dapat pensiun dan softphone dapat gunakan URL canonical pbx.k1.kluster.kamocrm.com / ws.
· kamo-register
Gunakan org nama pendek dan deskripsi di kepala HTML
Ganti org- API-based judul logika dengan konfigurasi .json siteNameShort sehingga judul mengikuti pola yang sama dengan situs lain: "Register - {siteNameShort}". Tambahkan keterangan meta tag dari konfigurasi. Hapus impor Theme Config yang tak terpakai.
· kamo-login
Gunakan org nama pendek dan deskripsi di kepala HTML
DynamicMetaLoader now sets document.title to "Login - {siteNameShort}" dan menulis deskripsi org ke dalam tag deskripsi meta. Layout.tsx static fallback dimutakhirkan; dihapus hardcode KamoCRM OG / Twitter metadata.

Alam semestamu menunggu.
Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.
Gratis selamanya — tidak diperlukan kartu kredit