Create Document button to all 로그인 회원
Org 기능 플래그 체크 (isDocsEditor → isDocs → hasFeature DOCS) org 기능 사용 deprecated 키 유형 때문에 false를 반환했다. 단추는 유효한 memberId를 가진 어떤 일원든지에 지금 보입니다; 기능이 사용할 수 없는 경우 backen...
Datagrid 필드 레벨 필터 및 플로팅 필터 행 제거
모든 열 필터와 부동 필터 입력 행을 해제 그리드는 열 헤더와 데이터 행만 보여줍니다. 필터를 제거 설정할 열 필터가 없기 때문에 sidebar의 도구 패널.
DocManager 도구 모음으로 업로드 버튼을 이동
업로드 트리거는 /doc/manager 페이지의 작업 프로에만 있었다, DocManager가 다른 페이지에 내장될 때 보이지 않는 것을 만들기. 지원하다 DocManager의 도구 모음에 직접 업로드 버튼은 항상 현재 상태에 상관없이. 현재 과다한 외부 제거 page.tsx의 버튼과 글...
임베디드 DocManager에서 스크롤 할 수있는 업로드 옵션을 허용
탭 컨테이너가 overflow:hidden, clipping per-file 옵션 (description, 폴더, doc 타입, 액세스 레벨) 임베디드 컨텍스트 overflowY로 변경 : 자동 및 추가 패딩 MultiFileUploader 루트 그래서 옵션은 항상 도달 할 수 있습니다...
수정 400 피드 오류 및 URL params와 통신 하위 태그 추가
두 배 수정? FeedEndpoint가 이미 포함된 쿼리 params 하지만 fetch appended ?page=... 대신 &page=..., 원인 백엔드가 400로 거부된 URL을 수정했습니다. 모든 기본 탭에 대한 URL 쿼리 params 추가 (?tab=) 및 통신 서브탭 *...
에이전트 필터의 아이콘을 가진 'All Leads'실제 메뉴 아이템
- placeholder를 ALL 로 비가치 아이템을 대체하십시오. 모든 리드가 선택될 때 공백을 결코 보여줍니다 - 모든 리드 및 PersonOff 아이콘을 추가하여 할당된 리드에 추가 - ALL 값에 할당된 배당을 올바르게 게이트에 필터 로직 수정
Consume *** 비밀 그래서 X-Internal-Auth 일치 다운 스트림 서비스
대몬서비스 -> 변환서비스 ***********는 DaemonService가 스탬핑하기 때문에 401 Unauthorized 반환 X-Internal-Auth 헤더는 INTERNAL AUTH SECRET에서 변환 서비스 관련 상품 *************** ( 클러스터 전체) 공유 비...
Use @CreationTimestamp(source=DB) on ****************
The DB is the single source of truth for timestamps in this codebase. The canonical Hibernate pattern is @CreationTimestamp(source = SourceType.DB), which makes...
Let DB fill **************** via @Generated(INSERT)
INSERTs were failing with: null value in column "date_created" violates not-null constraint @ColumnDefault only declares the DB-side default for new rows; Hi...
Drop the [from-internal-custom] _X. catch-all that broke softphone calls
The catch-all exten => _X.,1 in [from-internal-custom] was intercepting every internal dial — softphones started reporting "phone is not registered" / calls wou...
Enable JPA repos for commerce + email + dao.repositories packages
ConversionService new pod CrashLoopBackOff with the same error DaemonService hit earlier: Parameter 0 of constructor in **************** required a bean of ...
Carve /api/voip/recordings/** out of the wildcard VOIP forwarder
The /api/voip/** catch-all in APIGatewayController was shadowing the dedicated VoipRecordingUploadController POST /api/voip/recordings/upload mapping when Sprin...
Write managed config files 0644 so the asterisk daemon can read them
The kamo-asterisk-support pod runs as root and writes to host-mounted **************** Asterisk inside the FreePBX pod runs as user "asterisk" and could not rea...
Envsubst-compatible \${VAR} 구성 템플릿의 구문 + stale placeholder에 렌더링
Pods was CrashLoopBackOff 와 "config errors: API KEY is missing or too short" config 템플릿이 리터럴 API KEY 마커를 사용했기 때문에 envsubst 침묵으로 떠나지 않는 ($VAR / \${VAR}). 첫번째...
Drop unused watcher import
uploader.go only uses CallBatch (declared in grouper.go in the same package), not anything from internal/watcher directly. Go rejects unused imports.
상거래에 대한 JPA 리포지트 + 이메일 + dao.repositories 패키지
DaemonService는 다음과 같은 스타트업에 충돌했습니다. 모수 ***********에 있는 constructor의 0 *필수 유형의 콩 *********** 찾을 수 없습니다. 최근 추가 kamo-shared-library 서비스 (AppliedModelEnforcement) ...
Capture newExtNumber as final for lambda 캡처 에 MemberVoipConfigController
newExtNumber는 (isVoipEnabled && ...) 블록, 그것은 효과적으로 최종하지 않습니다. TeamMember sync 블록 읽기 컴파일러가 거부하는 select.ifPresent() lambda 안에 있습니다. Lambda 전에 최종 사본을 비어없이 언어 규칙을 만...
던지기 voiceActivityDetection to 우회 누락 TS DOM 유형
voiceActivityDetection는 유효한 WebRTC MediaTrackConstraints 재산입니다 그러나 TypeScript의 DOM lib를 사용하여 빌드 시간에 유형 오류를 발생시킵니다.
STUN을 구성하므로 브라우저 ICE는 양방향으로 완료할 수 있습니다
SIP 레이어에 연결된 2자 브라우저 - 투 - 브라우져 통화는 없지만 오디오 중 방향. Voicemail (편도 Asterisk → 브라우저) 일 Asterisk의 비대칭 RTP가 브라우저를 배울 수 있기 때문에 inbound 패킷의 주소. 2 파티 브리징은 양측을 필요로한다. RTP...
Load-interrupts, centered spinner, outbound ringback을 살아가는 라이브 오디오
In-call 오디오 경로에 대한 세 개의 좌표 고정 : 1. RemoteAudio.play()에 AbortError (제작 콘솔에서 볼 수 있음) "Play() 요청은 새로운 로드 요청에 의해 중단되었습니다."실제로: 그것은 스피커에서 0 오디오를 의미한다. 각 세션은 reassig...
Hangup tears down ALL live sessions, not just the primary
Self-call edge case left a session leaked: dialing your own extension creates an outbound session, then Asterisk loops the call back as a second inbound session...
Instant connecting feedback on outbound dial
Same problem the inbound Answer button had: clicking Call kicked off the SIP INVITE round-trip (1-3 seconds) but the button kept its idle "Call" appearance the ...
연결 애니메이션 + 오디오는 실제로 + 벨소리 잠금 해제
Inbound-call 경로에 대한 세 개의 좌표 고정 : 1. 수락하는 동안 시각적인 의견. 답을 클릭 버튼 모두 왼쪽 응답하지만 반응하지 않는 — SDP 협상은 1-3 s를 걸립니다 호출이 시작되기 전에, UI는 아무 표시도 하지 않았다 이름 * SoftphoneState에 isA...
ToolDock 위 Mount SoftphoneProvider 그래서 도구 창을 읽을 수 있습니다
Softphone 팝업은 "이 페이지는로드 할 수 없습니다"로 페이지를 추락했습니다. ToolProviders에 살고있는 ToolDock 내부의 도구 창 마운트 - AuthenticatedToolWrapper의 SIBLING. SoftphoneProvider는 배열되었습니다. Authe...
Grid size prop을 사용하여 AV 패널이 행을 채웁니다
MUI v7의 그리드는 flexbox 기반이므로 GridColumn sx를 사용했습니다. no-op – 자연의 폭에 렌더링 된 아이템과 빈 왼쪽 오른쪽에 공간. 지원된 크기 prop로 전환 (size={{ xs: 12, md: 6, lg: 4 }})는 각 패널을 실제로 주장합니다 12 ...
Migrate stale ringtone ID는 부하에 기본적으로
사용자의 저장된 AV 환경 설정이 더 이상 벨소리를 참조하는 경우 카탈로그 (예 : 'classic' 카탈로그 이전 trimmed), 벨소리 탭은 선택하지 않고 렌더링 softphone는 효과적으로 벨소리가 없었다. getAVSettings 지금 유효한 RINGTONE CATALOG에 ...
Dialpad 손가락 이제 터치 장치에 등록
OnTouchStart에서 e.preventDefault()라는 다이얼패드 버튼과 관련 기사 그것은 합성 클릭 이벤트를 제출하는 브라우저를 중지 그런 다음 터치를 따르십시오. 그런 다음 onClick={handleDialpadClick}가 켜지지 않았습니다. 정제, 키를 태핑하지 않은 ...
내부에 브라우저 SIP WSS를 호스팅합니다.kamocrm.com (실제 cert)
브라우저는 웹소켓 연결을 거부 *********** Traefik이 자체 서명 된 기본 cert를 제공했기 때문에 가까운 코드 1006 hostname에 대해 ( Let's Encrypt cert가 포함되지 않음) 다른 kamocrm.com 엔드 포인트). 컬은 우리가 시험하기 때문에 ...
마케팅 라이브 채팅 대 회원을위한 별도의 지구 존재
한국어 채팅 위젯 티켓은 requestorId로 org placeholder를 유지; 만 사용 미디어 세션은 그 행에 대한 존재. 내부 및 기타 티켓 이용 회원 존재 (보존으로 세션) 그래서 kamo-internal requestors 쇼 그들의 정통 채팅 WS가 올 때 온라인.
정기적인 STOMP 존재 심박수
Redis TTL for public session 존재 그래서 에이전트는 정확한 온라인 상태를 참조하십시오.
Globe는 마케팅 방문자를 위해 미디어 세션을 사용합니다
Public-chat session GUIDs inpresent snapshot; 온라인 치료 세션 또는 요청자 회원이 연결됩니다. 손잡이 스냅샷 봉투 및 sessionGuid deltas 에 /topic/presence.
Redis에서 세션 GUID에 의해 공개 지원 채팅 추적
마케팅 방문자 사용 /ws/public-chat-native 없이 memberId; 티켓 여전히 org placeholder 회원을 requestor로 참조하십시오. 사업소개 PUBLIC public STOMP connect/disconnect, 방송 sessionGuid on /top...
Metadata가 부족한 공급자로부터 sync에 회원 할당하지 마십시오
*************** 무조건 overwrote PhoneExtension. 모든 공급자와 함께 할당된MemberId. 무료PBX (그리고 Kamo 회원이 확장을 소유하지 않는 어떤 공급자) listExtensions()에 할당된MemberId=null을 반환하므로 새로 고침=tr...
표시 제공 업체 이름 보기 모드 + 편집 드롭다운에서 자신의 확장
****************에 두 개의 버그 1. 보기 모드는 원시 UUID를 덤프 — "Instance 32f520b0-347a-..." — 때문에 인스턴스 목록은 handleVoipEdit() 안에만 로드되었습니다. Load 인스턴스 마운트에 VOIP config와 함께 할당된I...
Serialize ExtensionDto. 할당 된MemberId 문자열로
overflows JS의 안전한integer 범위 (예를들면 1168485658174423046 왕복 1168485658174423000 한 번 JSON 번호는 브라우저를 표시). 오시는 길 이미 `string | null`로 입력하고 `String(mid)와 비교 === memberI...
WebRTC config는 pod 재시작을 살아
이전 접근법 (http custom.conf 와 [general] override) 하지 않았다 실제로 Asterisk의 INI 파서가 여러 가지를 존중하지 않기 때문에 효과가 발생합니다. [general] 섹션은 docs가 불행하게도 다음과 같은 방법을 포함합니다. http addit...
Enable Asterisk 내장 HTTP 서버:8089 WebRTC /ws
Res http websocket의 상단에 chan pjsip `protocol=ws` 수송 승차, 턴에는 Asterisk의 내장 HTTP 서버가 실행되어야 합니다. 더 보기 기본적으로 FreePBX 17는 그 서버가 비활성화된 배를 설치하므로 SIP-over-WS 요청 착륙 nowhe...
NameAlias에 대한 실제 이름 우선 순위 표시
nameAlias는 기능적으로 로그인 핸들 (사용자 이름과 동일), 표시 이름이 아닙니다. User.name (EmbNameFull)에서 실제 사용 가능한 이름. /names와 /by-department endpoints 모두에 적용하십시오.
Scope Add Lead scroll and footer to its content area에 추가하기
양식은 minHeight를 사용했다 : 이미 부모 내부 100vh calc(100vh - 56px), 내용이 적합할 때 외부 scrollbar를 강제합니다. 동작 바 또한 사용 위치: 왼쪽으로 고정: 0, 그래서 그것은 확장 NavPri sidebar 뒤에 페이지 scrollbar에. ...
Smart multi-column layout for Add Lead form에 대한 자세한 정보
페이지를 최고 수준의 그리드로 재구성합니다. 대신 개별 필드를 기지개: - Market & Assignment는 3-col 내부를 사용합니다 (시장 | 벤더 | 제품), Prospect 유형과 제일 접촉 시간 쌍은 아래에 반 폭에. - 1 차 접촉 및 우편 주소는 lg+ (7/5 쪼개...
/api/security/members/name 을 사용하여 할당된 이름의 해상도
By-department endpoint 필터로 활성 TeamMembers 만 누락 기본 회원 또는 비활성 회원에게 할당. /names로 전환 상태에 관계없이 모든 구성원을 반환합니다.
Full-width는 끈끈한 footer를 위한 지도 모양과 정리를 추가합니다
/leads/new에 1200px 최대 폭을 내리십시오 그래서 모양은 페이지 지역을 경간합니다, 그리고 범 바닥 패딩 그래서 끈 작업 바 더 이상 오버랩하지 아래쪽으로 스크롤 할 때 마지막 양식 섹션.
By-department endpoint에서 정확한 우선 순위를 가진 전시 이름 해결
우선순위: member.usernameAlias → user.name.formatFull() → user.alias → user.username