Microsoft Teams Phone as a provider
Teams is not one API, so the provider glues three control planes together: • Graph, app-only — call history (getPstnCalls), presence reads, directory and...
Phi access log에 VOIP PHI 트레일을 주장
녹음, 음성 메일 오디오 및 성적표는 로그에 감사되었습니다. 6년 §164.528 의무에 대해 14일을 유지하고 자원에 의해 정복 - 그래서 "이 호출에 듣고" unanswerable 유지 기록 된 동안도. JpaPhiAccessLogWriter를 작가로 벤탄은 PhiAccessReco...
공유 MFA 저장소 스캔
MfaEnrollmentService는 kamo-shared-library의 @서비스이므로 와일드 카드 @ComponentScan("com.kamo") 이 응용 프로그램에서 여부 또는 이지 여부를 구성 서비스는 MFA와 함께해야 할 일이 있습니다. — 그리고 그것의 constructor...
PHI-handling orgs에서 호출 재생에 대한 VIEW CALL LOGS가 필요합니다
녹음 및 음성 메일 재생 체크 된 열성 및 다른 것 : 어떤 회원 자신의 org는 그것에 어떤 통화를 당길 수, 성적 포함, 확장에 그들의 것은 아니었다. Requiring VIEW CALL LOGS outright는 옵션이 아닙니다. - 오른쪽은 할 수 있습니다. enum에 존재하고 ...
녹음, 음성메일 및 성적표
녹화 재생은 추적하지 않습니다. 기록 된 통화는 가장 오래된 PHI입니다. 플랫폼 상점 - 확실한 대화 - 그리고 "이를 듣고 전화"는 unanswerable, 이는 첫 번째 질문 §164.402 breach 평가 요청. Wires CallRecordingAuditor는 모든 것을 읽...
진행중인 탁월한 업무
단계와 헌신적인 as-is 그래서 아무것도 작동하지 나무에서 uncommitted 남아. 5개의 파일 변경, 549 삽입(+), 2개의 deletions(-)
Flaky egress에 대한 kubectl 다운로드를 Harden [skip ci]
dl.k8s.io 런너의 egress 간에 실수로 중간 전송을 삭제: 컬: (56) OpenSSL SSL read: 해독 실패 또는 나쁜 기록 맥 그렇지 않으면 녹색 빌드에 배포되지 않습니다. 반복적으로 관찰 kamo-signer-monorepo 및 카모 번역 사전. 추가 --retr...
만료 된 wildcard-kamocrm-com 비밀을 중지
wildcard-kamocrm-com은 cert-manager orphaned의 유산 멀티 산 비밀이었다 인증서가 per-host 비밀에 다시 지정되었을 때. 아무것도 그것을 갱신하고 그것은 만료 2026-07-20, 그리고 그것을 핀이 여기에 만료 된 cert를 Traefik의 기본 ...
TURN-REST credentials 모바일 소프트 폰의 엔드 포인트
GET /api/voip/turn/credentials 민트 ephemeral coturn creds (HMAC-SHA1 이상) "<expiry>:<memberId>" 와 공유된 정적-auth-secret) 그래서 native/cellular WebRTC는 47.181.8.84:3478...
REST +에 X- *** 토큰을 받아 ?st = 오디오 엔드포인트의 스트림 토큰
OTKValidation의 특징 필터 우선: X-OTK → X-***-Token → ?st= (GET, 오디오 공유 StreamTokenCodec을 통해 검증된 스트리밍 경로 internal.auth.secret; 주장은 관제사의 기존 org/member를 먹이 인증). Native 플...
Guard /internal/voip with InternalAuthFilter as documented — 세션 오스틴에 401'd
VoipInternalSyncController는 항상 내부AuthFilter를 감시로 문서화했습니다. 그러나 /internal/voip는 PROTECTED PREFIXES에서 절대로 OTK에서 제외되었다. 세션 필터 - 그래서 DaemonService의 VoipGlobalSyncJob...
해당 이용 후기에 달린 코멘트가 없습니다
Per-member RingCentral 흐름은 자체적으로 관리되었으므로 관리 관리 또 다른 회원 프로필은 "그들은 스스로 연결해야합니다." 시스템 일반적으로 회원의 RingCentral 계정을 만들고 자격 증명을 보유합니다. 회원을 대신 연결할 수 있어야 합니다. - OAuthCon...
Per-member RingCentral OAuth identity + 소프트 폰 SIP 수정
연약한 전화 SIP credential 고침: - getSipCredentials: 지도 outboundProxyBackup + stunServers (웹 전화 v2 필요 WSS의 실패 + ICE/media; throw ProviderException (502) 대신 bare Runti...
일정한 내부auth 비밀 비교 (timing oracle)
MessageDigest.isEqual로 String.equals를 대체하십시오 그래서 응답 대기시간은 할 수 없습니다 X-Internal-Auth 공유 비밀 바이트-by-byte를 누출하십시오. Fleet-wide 청소의 copy-pasted InternalAuthFilter (sam...
반환 200 모두 unconfigured org 기능을 위한 False
GET /api/voip/capabilities threw ProviderNotConfiguredException (422) 언제 org는 전화 공급자가 없었다, 모든 페이지 부하에 빨간색 콘솔 오류를 기록 전화번호 Capabilities는 자연적인 빈 대답을 가진 순수한 질문입니다, ...
OTK 세션 필터에서 /api/voip/sms/templates 제외
Doc-07 SMS 템플릿 엔드포인트는 세션이 없는 내부 통화가 보안됩니다. InternalAuthFilter (X-Internal-Auth), 하지만 OTKValidation 여과기는 아직도 그(것)들에 ran 그리고 401'd (*** 세션 없음). 접두사 목록, 미러링에 추가 /a...
Doc-07 SMS 템플렛 체계 — /api/voip/sms/templates + GSM-7/UCS-2 세그먼트 감시
*********** 공유형 SmsTemplate entities에: {{var}}을 렌더링하고 EXISTING BulkTextProvider primitive를 통해 전송합니다 (두 번째 없음) 캐리어 경로); SmsSegmentCalculator (GSM-7 160/153, UCS-...
와이어 mlos-internal-auth (INTERNAL AUTH SECRET) 배포 [skip ci]
새로운 /api/bulktext/send 엔드포인트를 가집니다. 기존의 생산 내부의 값 (mlos-internal-auth) 그래서 SecurityService의 복구 SMS 이름 * kubectl 패치를 통해 응용 프로그램 라이브; 이 persists it to git.
POST /api/bulktext/send 내부 거래 SMS 구현
SecurityService의 BulkTextSmsClient (암호복 + 계정 설정 SMS) 항상 posTed *********** 에 /api/bulktext/send, 그러나 컨트롤러는 결코 내장되지 않았다, 그래서 모든 호출 404'd - SMS 복구 죽은 에 prod. Inte...
K1m1 (clone+registry+kubeconfig from k1m1, 드롭 k2m1, 간단한 kubectl install)에 마이그레이션
Scope concurrency to build jobs, not Kubernetes deploys
Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...
MinIO object key를 녹화합니다
FILE EXT가 null/empty일 때 확장을 Omit RecordingImagingService 및 ImagingController. Java 문자열 concat 와 null {datId}.null 생성하고 softphone 미디어 플레이어에서 재생을 깨.
Member voip config, not phone extension의 호출 내역 확장을 해결
*********** NULL은 언제라도 확장합니다. member voip config는 회원을 확장으로 올바르게 맵핑했습니다. 제품정보 member voip config (callFeaturesController로 동일한 소스)는 회원이 VOIP를 구성했을 때 확장이 항상 발견됩니다.
Surface imaging fallback when provider has no call history
KamoPBXProvider.getCallHistory now returns null instead of throwing **************** so the 501 response no longer bypasses the imaging fallback. The provider c...
Fall back to imaging recordings for call history + voicemails
FreePBX 17 doesn't expose voicemail messages over REST or GraphQL on this install (the GraphQL voiceMail type returns mailbox config, not messages, and /admin/a...
Resolve member→extension before VM/CDR provider lookup
CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...
녹음 재생, voicemail 아카이브, paginated voicemail, 역사 enrichment
- 새로운 기록 미디어 플레이어 도구 창을 위한 마스터 + per-channel tracks 및 metadata를 위한 대량 조회, 범위 흐르는 오디오를 가진 관제사 - CallController.getCallHistory / getVoicemails는 새로운 RecordingLooku...
Capture newExtNumber as final for lambda 캡처 에 MemberVoipConfigController
newExtNumber는 (isVoipEnabled && ...) 블록, 그것은 효과적으로 최종하지 않습니다. TeamMember sync 블록 읽기 컴파일러가 거부하는 select.ifPresent() lambda 안에 있습니다. Lambda 전에 최종 사본을 비어없이 언어 규칙을 만...
콜 기능 추가 API - 공급자 요약을 통해 유선 전화 + 자동 answer
- CallFeaturesDto 및 SetCallFeaturesRequest POJOs 추가 - ProviderCapabilities에 callForward/autoAnswer 플래그 추가 - add default getCallFeatures/setCallFeatures to Phone...
Metadata가 부족한 공급자로부터 sync에 회원 할당하지 마십시오
*************** 무조건 overwrote PhoneExtension. 모든 공급자와 함께 할당된MemberId. 무료PBX (그리고 Kamo 회원이 확장을 소유하지 않는 어떤 공급자) listExtensions()에 할당된MemberId=null을 반환하므로 새로 고침=tr...
브라우저 softphones에 대한 WSS-aware SIP 자격
/api/voip/sip/credentials endpoint는 이제 credentials 브라우저 측을 반환합니다. SIP 스택은 실제로 사용할 수 있습니다 : WSS 운송, 공공 도메인 및 wsServers URL. - SipController는 회원의 회원VoipConfig을 해...
Persist connection test result to isConnected field
- test() endpoint saves isConnected=true/false to DB after every health check - update() resets isConnected to null when configJson changes (credentials may h...
Use extensionId as external ID, not Relay node id
FreePBX returns the same Relay id (ZXh0ZW5zaW9uOg== = "extension:") for every extension because the id field is not populated. Using it caused all extensions to...
살아있는 schema introspection에 대한 모든 GQL 쿼리 / mutations를 보충
모든 필드 이름과 실제 FreePBX 17 스키마에 대한 유형 확인. 개정의 가득 차있는 세트: 질문: - fetchAllExtensions: 확장에서 non-existent 'voicemail' 필드를 제거 - fetchAllUsers → allCoreUsers { coreUser ...
GraphQL 필드 이름 fetchAsteriskDetails
FreePBX API는 "Did you mean fetchAsteriskDetails?"를 반환합니다. - 건강 이름을 바꾸십시오. 쿼리 및 그 데이터 경로 accessor에 따라 확인합니다.
XHR/Accept 헤더 및 문자열 응답을 GraphQL 클라이언트로 파싱
FreePBXTokenCache와 같은 패턴: X-Requested-With + Accept: application/json FreePBX의 HTML 리디렉션 응답을 억제하고 모든 3 개의 호출 사이트를 전환 (queryOnce, restGet, restPost) 의 응답Entity<J...
토큰 엔드포인트에 대한 Accept+XHR 헤더와 raw-string 응답 패싱 추가
FreePBX는 클러스터 DNS를 통해 호출 할 때 텍스트 / HTML을 반환했습니다. Host header는 구성 된 PBX HOSTNAME과 일치하지 않았습니다. 더 보기 수락: application/json 및 X-Requested-With: XMLHttpRequest는 FreeP...
FreePBX API에 대한 정확한 OAuth2 범위 문자열
FreePBX 범위는 최상위 식별자입니다: 'gql' (모든 GraphQL) 과 'rest' (모든 REST). 'gql:read' 형식은 모듈의 GQL을 의미합니다. invalid scope 400 오류가 발생하지 않는 'read'로 이름을 붙입니다.
하락 stray VOIPService spec는 repo에서 md
프로젝트 컨벤션 당 (.md 파일은 서비스와 함께 발송하지 않습니다).
저장소 스캔에 com.kamo.z.shared.commerce 포함
최신 kamo-shared-library propagates *************** (donotmodify.dao.services)는 생성자 의존성을 가지고 있습니다. *************** *************** 더 보기 서비스는 VOIPService의 구성 요소 검사...
