변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· VOIPService
Sync TeamMember PhoneWork extension on VOIP 설정 저장
· SecurityService
Backfill TeamMember 전화시작에 MemberVoipConfig에서 확장
· kamo-internal
Wire call는 공급자 요약을 통해 설정 종료를 제공합니다
- voipApi: CallFeaturesDto 타입 추가, getCallFeatures() 및 setCallFeatures() API 호출 - useSoftphone: 추가 *********** 국가 로드 API에서 시작; setCallForward/setAutoAnswer 작업 persist API; 자동 answer and call-forward effect 트리거 on inbound 호출 when features are active - SoftphonePanel : 로컬 전용 통화 기능 상태를 제거합니다. 유선 통화 전달 toggle 및 softphone 상황에 입력; softphone 상황에 자동 응답 toggle; 'Manage Extended A/V'로 나브 버튼을 이름 바꾸기 설정 - 오디오 슬라이더 sync는 이미 useAVSettings 이벤트 버스를 통해 기능되었다 - 변경이 필요하지
· VOIPService
콜 기능 추가 API - 공급자 요약을 통해 유선 전화 + 자동 answer
- CallFeaturesDto 및 SetCallFeaturesRequest POJOs 추가 - ProviderCapabilities에 callForward/autoAnswer 플래그 추가 - add default getCallFeatures/setCallFeatures to PhoneProvider 인터페이스 - RingCentral : 응답 규칙 REST API (UnconditionalForwarding)을 통해 구현 - FreePBX : GraphQL addCallforward mutation을 통해 구현 - CallFeaturesController: GET/PUT /api/voip/calls/features — DB 1차, 공급자 부정적인 동기화
· kamo-shared-library
MemberCallFeatures entity 및 repository for call forward and auto-answer preferences 추가
· kamo-asterisk-support
처음 커밋 - FreePBX 레코딩 로더 (GO)
시계 *********** 완성된 WAV 기록, 그룹 멀티 다리 Asterisk UNIQUEID로, 각 배치를 업로드 VOIP RECORDING UPLOADS-scoped를 사용하여 APIService /api/voip/recordings/upload API 키. 파일은 플랫폼이 저장을 확인한 후 디스크에서 삭제됩니다. 부트 스트랩 idempotently gives a AMI user via manager custom.conf 과 extensions custom.conf를 통해 MixMonitor() per-channel Hooks 설치 Asterisk를 호출하여 다이얼 플랜/manager 모듈을 다시 로드합니다. 관리 블록 모두 명확하게 표시된 배너에 의해 둘러싸여 그래서 관리자 사용자 정의 생존. Dockerfile, k8s는 k1m1 및 k2m1 (Deployment + ConfigMap + 포함 비밀 템플릿), *********** 나머지 미러링 플랫폼 및 독립 FreePBX 호스트를 위한 비 기술적인 README.txt.
· kamo-internal
VOIP RECORDING UPLOADS 범위 + 기록 파이프라인 카운터/tunables
- APIManager: 새로운 VOIP RECORDING UPLOADS 범위 옵션 (kamo-asterisk-support 사용) FreePBX는 음성 메일을 업로드하고 APIService를 통해 녹음을 호출합니다. - VoipSmsTab : 4 개의 카운터가있는 새로운 "Recording Pipeline"카드 (voicemails to 프로세스, 프로세스 호출, 오류의 음성 메일, 오류 통화) - 새로 고침 모든 30s는, ***********를 이용합니다 새로운 "기록 가공" voipVmBatchSize / voipCallBatchSize / voipPollSeconds와 카드 튜닝. - systemConfigApi: Update()를 확장하여 새로운 tunables를 보낼 수 있습니다. - 유형/전화: SystemConfiguration Dto는 세 가지 새로운 운하를 얻을; VoipRecordingStatsDto 추가.
· SecurityService
시스템 구성 기록 통계 + 레코딩 처리 tunables
- GET *********** 4 카운터를 반환 kamo-internal Settings → Platform → 구성 → VoIP / SMS에 노출 탭 (vmPending, callPending, vmError, callError). - PUT /api/security/system-config는 이제 voipVmBatchSize, voipCallBatchSize를 허용한다. DaemonService 레코딩 프로세서를 위한 voipPollSeconds. - toDto()는 새로운 필드를 포함하므로 frontend는 다시 읽을 수 있습니다.
· DaemonService
RecordingProcessorJob + NATS 숏커트
- 새로운 석영 작업 RecordingProcessorJob ticks 매 분, 독립적 인 파견 VM 및 호출 일괄 변환 서비스 *************** 사용 *********** voipCallBatchSize} 모자로. - 새로운 RecordingReceivedConsumer는 voip.recording.received NATS 주제를 구독합니다. 변환에 의해 방출되는 신선한 업로드 및 트리거 즉시 실행, 그래서 새로워진 녹음은 초 이내에 처리됩니다. 정기적인 투표 - Configmap은 daemon.jobs.recordings.cron과 노출합니다. *********** 그것은 이야기합니다.
· ConversionService
기록 ingest + FFmpeg 처리 파이프라인
- 새로운 *********** endpoint 단계 multipart 업로드 최소 버킷으로 APIService에 의해 전달 **************** unprocessedRecording staging 행을 생성합니다. retries에 Idempotent 사용 (phoneServerId, asteriskUniqueId). - 새로운 *********** endpoint (대monService에 의해 호출) drains rows: 다운로드 단계 WAVs, 혼합 전화 다리 단일 Opus/WebM FFmpeg amix를 통해 마스터, 각 채널 WAVs를 트랙으로 변환 VM RECORDING로 RecordingImagingService를 통한 마스터 및 업로드 (8) / CALL RECORDING (9) ImageAssocType입니다. - 새로운 FfmpegService 래퍼 (transcodeToOpusWebm / mixToOpusWebm) 타임 아웃 그리고 tempfile 정리. - NATS 게시자는 voip.recording.received를 각 단계로 업로드하여 방출합니다. DaemonService는 주기적인 설문조사를 단축할 수 있습니다. - Dockerfile는 런타임 스테이지에서 ffmpeg을 설치합니다 (alpine ffmpeg ships) 기본적으로 libopus). - ConfigMap 노출 *************** (shared 크로스 서비스 내부 호출 비밀) 그래서 새로운 엔드 포인트 APIService를 인증 할 수 대몬서비스 콜러.
· APIService
VoipRecordingUploadController for kamo-asterisk-support 파일 업로드
POST /api/voip/recordings/upload는 kamo-asterisk-support에서 multipart 몸을 받아들입니다 FreePBX 호스트에서 실행. X-Api-Key는 새로운 VOIP RECORDING UPLOADS를 제공합니다. 범위 ( *********** 유효성 검사), 그 후에 멀티 파트 페이로드 + 메타 데이터 헤더 (X-Phone-Server-Id, X-Asterisk-Unique-Id, X-Recording-Kind, X-Primary-Extension) 변환 서비스 ***************
· kamo-shared-library
UnprocessedRecording staging entity, ImgDat 트랙 트랙, 레코딩 이미징 서비스
- 수정 ImageAssocType ID 충돌: VM RECORDING=8, CALL RECORDING=9 (모든 것 4에 MY DOCS를 복제합니다. - 추가 *********** 그래서 마스터 녹음을 수행 할 수 있습니다 per-channel Opus/WebM는 기존의 썸네일 개념과 함께 추적합니다. - Opus-in-WebM 컨테이너에 대한 ImageMimeType.AUDIO WEBM (audio/webm) 추가 변환 파이프라인에 의해 생성. - 새로운 UnprocessedRecording (UUID id, IS VM, PHONE SERVER ID, EXTENSION, ASTERISK UNIQUE ID, IS PROCESSED, IS ERROR, ERROR MESSAGE, RESULT IMG ID, DATE CREATED, DATE PROCESSED) 스테이킹 엔터티 + 저장소 kamo-asterisk-support → 변환서비스 → 대몬서비스 파이프라인. - 새로운 기록Imaging 마스터 Opus/WebM 마스터를 영상으로 업로드하는 서비스 ImgDat.trackCount를 통해 첨부된 per-channel Opus/WebM 트랙으로. - SystemConfiguration : voipVmBatchSize / voipCallBatchSize / voipPollSeconds 추가 대몬서비스 녹음기 tunables.
· kamo-asterisk-support
처음 커밋 - FreePBX 레코딩 로더 (GO)
시계 *********** 완성된 WAV 기록, 그룹 멀티 다리 Asterisk UNIQUEID로, 각 배치를 업로드 VOIP RECORDING UPLOADS-scoped를 사용하여 APIService /api/voip/recordings/upload API 키. 파일은 플랫폼이 저장을 확인한 후 디스크에서 삭제됩니다. 부트 스트랩 idempotently gives a AMI user via manager custom.conf 과 extensions custom.conf를 통해 MixMonitor() per-channel Hooks 설치 Asterisk를 호출하여 다이얼 플랜/manager 모듈을 다시 로드합니다. 관리 블록 모두 명확하게 표시된 배너에 의해 둘러싸여 그래서 관리자 사용자 정의 생존. Dockerfile, k8s는 k1m1 및 k2m1 (Deployment + ConfigMap + 포함 비밀 템플릿), *********** 나머지 미러링 플랫폼 및 독립 FreePBX 호스트를 위한 비 기술적인 README.txt.
· kamo-internal
완전한 기능의 SoftphoneContacts로 모의 접촉 탭을 대체하십시오
새로운 SoftphoneContacts 구성 요소는 softphone 접촉을 와이어 useContacts()를 통해 실제 접촉 API로 탭합니다. 4개의 hardcoded 모를 대체하십시오 모든 연락처 책에서 라이브 데이터와 접촉. 특징: - 드롭다운 선별기가있는 책 및 그룹 필터 알약 - Debounced search, 정렬 마지막/첫/전체 이름 - 컬러 코딩 avatar 초기화 (deterministic hash), 사진 지원 - hover-reveal Quick-call 버튼과 접촉 목록 - 전화, 이메일, org, 메모를 보여주는 세부 사항보기 (장소 목록) - 모든 필드에 대한 인라인 편집 모드 (phones/emails multi-value with add/remove) - 확인 단계로 연락처 삭제 - 빈 및 선적 skeleton 국가 - "New contact"는 /contacts로 이동합니까? 동작=create update contacts/page.tsx 를 auto-open 으로 만들 대화 상자 때 ?action=create query param는 현재 (softphone "New" 버튼에 의해 사용).
· kamo-internal
Interaction Center의 역할 옆에 인라인 텍스트와 확장 칩을 대체하십시오
· kamo-internal
수동 전화 확장 필드 제거; 저장에 SecurityService를 통해 VOIP 확장 쓰기
· SecurityService
By-department 응답에 있는 PhoneWork 연장을 포함하십시오; 회원 PUT에 PhoneWorkExtension를 받아들이십시오
· kamo-shared-library
TeamMember에 *********** 도움말 추가
· kamo-internal
철사 VAD + 푸시-투-토크; unimplementable 조정을 제거합니다
- vadEnabled 이제는 buildAudioConstraints에서 voiceActivityDetection로 전달 브라우저는 호출을 위해 mic를 열 때 toggle를 존중합니다. - PushToTalk 자동 mutes mic at call accept and installs keydown/keyup 지정된 단축키가 개최되는 동안의 청취자 - 기능 배선이 없는 설정 제거 및 구현할 수 없습니다. 표준 브라우저 WebRTC API를 통해: micGain (SIP 파이프라인에서 GainNode 없음), highPassFilter, 노이즈게이트, vadThreshold, hdVoice, cameraBackgroundBlur (ML 필요), cameraBrightness/cameraContrast (CSS 미리보기 전용) - AVSettings 공용영역과 DEFAULT AV SETTINGS를 그러므로 청소하십시오; 제거 후에 rebalanced toggle 격자
· kamo-internal
검색 필터와 스크롤 벨소리 목록
벨소리 카탈로그 패널은 오른쪽 높이와 스크롤 일치 목록 과잉이 될 때 수직으로, 그래서 회원은 더 많은 톤으로 탐색 할 수 있습니다 추가. 라벨 또는 파일명 필터에 의해 검색 필드를 추가, 와 명확한 단추 및 빈 상태 메시지.
· kamo-internal
카탈로그에 7 더 벨소리 추가
Battleship Horn, 악마 Horn, 랜드 라인, 1985 링, 사무실 전화 추가, /public/sounds/ringtones/와 철사의 밑에 반지 오래된 전화 및 Olé RINGTONE CATALOG로 나타낸다. Default / Sci-Fi / 초인종 / 벨소리 서브탭의 침묵 옵션.
· kamo-internal
Sci-Fi 및 Buzzer 벨소리 추가
/public/sounds/ringtones/의 밑에 2개의 새로운 벨소리 자산 및 RINGTONE CATALOG에 등록하여 Ringtones에 표시됩니다. subtab는 과태 들어오는 softphone 음색으로 놓일 수 있습니다.
· kamo-internal
Three-column 오디오 레이아웃, 드롭 저장-바너, 충전 폭
마이크로 오디오 subtab을 덧붙였다 | 스피커 | 고급 lg+ 화면의 전체 행 (그들은 여전히 두 번, xs 스택을 쌍). 더 보기 고급 카드 스위치는 좁은 열 안쪽에 수직 더미에. "자동 설정 설정 설정" footer — the 행동은 implicit이고 카드는 다만 공간을 가지고 갔습니다. 폭에 힘 sectionCard 패널: 100%년은 alignItems="stretch"를 추가합니다 각 subtab의 그리드에 그래서 카드는 항상 열 가장자리 가장자리를 채웁니다.
· kamo-internal
오디오/비디오/Ringtones subtabs로 분할 AV 설정
Audio/Video 탭을 3개의 내부 subtabs로 바꿔 놓습니다. 각각의 수평으로 설정은 뷰 포트 내에서 적합 우리가 전에 가지고 있던 수직 scrolling의 벽. 또한 벨소리 카탈로그를 실제 시점에 수정 /sounds/ringtone.mp3 자산 대신 phantom 경로 /sounds/ringtones/, 그래서 미리보기와 항상 softphone 세션 단일 canonical 벨소리를 공유합니다.
· kamo-internal
오디오 / 비디오 설정 탭 및 유선을 softphone으로 추가
Per-device AV 환경 설정 저장소 (localStorage, machine-specific, 로밍하지 않음) /settings/member/<id>에 완전히 기능이 있는 탭 플러스 구성 및 테스트 마이크, 스피커, 링거 및 카메라. 소프트 폰 도구 창, 벨소리 재생 및 SIP SDK 어댑터 지금 이러한 설정을 존중: setSinkId를 통해 장치 여정, getUserMedia constraints (deviceId + EC/NS/AGC/sample 비율), DTMF 음량, ringer device + tone 선택, mute-on-join 및 데스크탑 알림.
· kamo-internal
자동 팝업 + 벨소리와 함께 항상 SIP 세션
팝업 도구 창이 열릴 때만 등록하는 softphone 그것을 닫고 inbound 호출은 조용히 놓쳤다. 세션을 SoftphoneProvider AuthenticatedToolWrapper에 장착 된 SIP REGISTER는 운영자가 서명하고 어떤 인바운드 INVITE 연산자의 주의를 가져옵니다. - app/hooks/useSoftphone.ts: 구현 후크 이름을 변경 useSoftphoneSession은 한 번 정확히 장착해야합니다. 세션 당 (SIP 자격 및 REGISTER를 소유합니다). - *********** 새로운 SoftphoneProvider 세션 실행 한 번 후 컨텍스트를 통해 상태를 노출하고, hasIncoming에 반응합니다. 이름 * 전환 - 도구로 softphone 도구 창을 팝업 : 사용자 정의 이벤트를 엽니 다 (단일 인스턴스이므로 이미 열리면 초점을 맞추고 있습니다) 제목, 재생 /sounds/ringtone.mp3 에 a 루프 까지 사용자 accepts/rejects/the 먼 걸림새. Public useSoftphone() 후크 읽기 context에서. - *********** context로 가져올 전환. - *********** 도구 트리를 감싸고 SoftphoneProvider 그래서 세션은 auth 상태만큼 생활. 고전적인 NA cadence (440Hz + 480Hz, 2s에, 4s 침묵) 그래서 audio.loop=true 천연 링 / 일시 / 링 패턴을 산출합니다. ~72 KB 브라우저는 초기 재생을 차단할 수 있습니다() 사용자가 제스처를 가지고 페이지; 연산자는 일반적으로 전화를 한 번 이상 클릭 도착, 그래서 이것은 거의 연습 문제입니다.
· KlusterServices
Seed pbx.k1.kluster.kamocrm.com 정적 도메인으로
브라우저 소프트 폰은 SIP-over-WSS가 실제 호스트 이름에 착륙해야합니다. TLS 인증 FreePBX 관리자 / WS hostname을 STATIC DOMAINS에 추가하십시오. auto-cert seeder 규정 a per-host Let's Encrypt cert for it Traefik 액세스 로그에 표시되지 않는 대신. cert가 발행되면, 임시 internal.kamocrm.com/voip-ws 경로 (작업으로 이전 완료) 은퇴 할 수 있으며 소프트 폰 할 수 있습니다. canonical pbx.k1.kluster.kamocrm.com/ws URL을 사용하십시오.
· kamo-register
HTML 머리에 org 짧은 이름과 설명을 사용하십시오
Org-API 기반 제목 논리를 config.json siteNameShort로 대체하십시오. 제목은 다른 사이트와 동일한 패턴을 따릅니다 : "Register - {siteNameShort}". config.json에서 설명 메타 태그를 추가합니다. 사용하지 않는 useThemeConfig 가져오기 제거.
· kamo-login
HTML 머리에 org 짧은 이름과 설명을 사용하십시오
DynamicMetaLoader는 이제 "Login - {siteNameShort}"에 document.title을 설정합니다. and writes the org description into the 메타 설명 태그. Static layout.tsx fallback 업데이트; 하드 코딩된 KamoCRM OG/Twitter 메타데이터 제거.
· kamo-internal
HTML 머리에 org 짧은 이름과 설명을 사용하십시오
DynamicMetaLoader는 이제 document.title을 siteNameShort (was siteName)에 설정합니다. and writes the org description into the 메타 설명 태그. Static layout.tsx fallback은 일반적인 값으로 업데이트됩니다.

당신의 우주는 기다리고 있습니다.
몇 분 안에 무료로 시작하세요. 준비가 되면 언제든지 제품을 추가할 수 있습니다.
영원히 무료 - 신용 카드 필요 없음