변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· kamo-shared-library
MANAGE ENTERPRISE 회사소개
기업 협상, 결코 셀프 서비스. 이 오른쪽 게이트 모두 halves의 그: 어떤 비용을 보고, 그리고 그것에 조직을 넣어. Category.OPERATIONS 오히려 CONSOLE - 그것은에 도달하는 행동을 문 tenant의 청구, 플랫폼 콘솔의 하나의 화면이 아닙니다. 플랫폼에서 평소의 이유에 대한 열렬한 것 보다는 오히려 회전: tenant 관리자는 자신의 조직의 보안 모델을 편집 할 수 있으므로 여기에서 RoleRightType은 고객에게 협상 된 계층을 부여 할 것입니다. EnumType.STRING로 Persisted, 그래서 승인은 안전합니다.
· SecurityService
처방전을 작성하기 전에 차트를 확인하십시오
Prescribing은 알레르기 테이블, 상호 검사 쿼리 및 추가되었습니다. "safety context"는 읽지 않은 것 외에도 모든 것을 종료합니다. 기록 시스템 알레르기와 그 후에 그것을 언급하지 않고도 처방전을 작성합니다. 알레르기를 기록하지 않는 한, 연습 때문에 그것은 믿는다 확인하기 3개의 검사는 연습의 자신의 자료 정확하게 응답할 수 있습니다: 약은 일치합니다 기록 된 알레르기, 환자는 이미 그것에, 또는 아무도에 대해 물었다 모든 것에 알레르기. 그 마지막 것은 자신의 경고입니다 - 빈 목록은 "no 알려진 알레르기"또는 "몸이 물었다"및 그들 중 하나가 처방하는 것이 안전하다 관련 기사 긍정적으로 기록 된 " 알려진 알레르기"열은 치료되지 않습니다. 물질. 필요한 인정을 가진 경고, refusals. 진료소는 deliberately prescribe a 환자 reacted mildly 에 years ago, 과 시스템 그대는 한 사람의 길입니다. 어떤 일이 발생하지 않습니다 IGNORANCE에서, 그래서 쓰기는 prescriber가 경고를 본 때까지 거부 그리고 그들이 진행하는 이유를 쓰고 말한다. 그 이유는 WARN에 로그인 회원, 약물 및 환자는 나중에 검토가 무엇인지 때문입니다. 409 오히려 400 : 아무것도 변형되지 않습니다. 그것은 유효한 처방전입니다. 기록된 것과 동일한 요청이 한 번에 성공합니다. 첨부파일 경고는 몸에 여행 - 단지 "unsafe"라고 말했다 컴퓨터가 이미 알고있는 차트를 통해 누군가 사냥을 보낼 것입니다. 일치 방울 힘 및 충전물 단어. "아모시실린 500mg"과 "아모시실린" 같은 약물이므로 다른 힘은 알레르기를 숨길 수 없습니다. "tablet", "구"와 "해상"은 모든 약물 이름의 반에 나타나고 그들에 매치됩니다. 모든 알레르기에 대한 모든 처방전, 이는 가장 빠른 방법 사람들은 경고를 읽습니다. DELIBERATELY 약물 드럭 상호 작용 검사. 그것은 라이센스 된 데이터베이스를 필요로 (First Databank, Medi-Span) 이 플랫폼은 없습니다. 법은 파일을 포함 할 수있는 가장 위험한 일입니다 : 그것은 보일 것입니다 상호 작용 검사와 같은, 그것으로 신뢰되고, 가장 상호 작용을 놓습니다. 더 보기 클래스는 많은 단어로 말한다. 15 테스트.
· KlusterServices
단계 0 인프라 게이트
- 실제 cert (turn-kamocrm-com-cert)를 가진 5349에 TLS에 TURN. 없음 turn:, 443-only egress 방화벽 뒤에 고객은 미디어 경로가 없습니다. 외부 인증: 청취자, 체인 검증. - 권한 호스트 포트 할당 테이블; k3m1 예약 KamoPBX. - 라우터 NAT 규칙은 in-repo, incl. 누락 pbx.kamocrm.com 기록 (제 42.181.8.87). - k3m1가 47.181.8.87에 대한 수정된 coturn 코멘트; 42.181.8.87입니다. 그리고 .87 에 47.x는 관련 제 3 자에 속한다. - 실제 52000-65535에 정확한 릴레이 범위 (README는 49152 말했다). - 외부에서 check-phase0.sh 조사. UDP 행 보고서 INCONCLUSIVE PASS 보다는 오히려: nc -z -u는 거의 어떤 UDP 항구든지 열리고, SIP 및 RTP 경로에 거짓 그린이 됩니다.
· kamo-shared-library
비행기를 구입하는 계획 특징의 단위를 나르십시오
카탈로그는 모두에 따라 기능 당 단위를 저장했습니다 - "GB/user", "users", "contacts"-그리고 계획 기능 DTO는 그것을 떨어졌다, 그래서 모든 표면 렌더링 측정된 특징은 벌거벗은 수를 인쇄했습니다. 가격 페이지는 "저장 (15)"를 보여주었습니다 5 / 15 / 25 / 50의 비교 열 및 독자는 약관에 도달해야 사용자 당 gigabytes를 의미하는 것을 배우는 접의 밑에 멀리 풀. featureCode의 per-consumer를 사용하여 stale 블록 크기를 넣어 이미 마케팅 사이트, 그래서 대신 값으로 여행.
· KlusterServices
인바운드 인사를 KamoCRM-Main-Intro-2로 교환하십시오
이전보다 오히려 새로운 파일로 업로드, 그래서 다시 회전 KAMO ATTENDANT INTRO와 다이얼 플랜 리로드에 대한 원라인 변경은 없습니다. re-upload 필요. 48 kHz 스테레오 소스는 8 kHz 모노 Asterisk로 변환 요구; 59.9s, 70s에서 아래로. 검증된 라이브: CDR는 BackGround custom/kamocrm-main-intro-2 및 Asterisk를 보여줍니다 478954 바이트의 u-law, 정확히 59.87s의 파일을 8000 B / s.
· kamo-internal
저자 평평한 작업 책, 분당 가격
SW5 placeholder 팬을 실제 승인 표면으로 교체하십시오 : 3 한 탭에 하위 뷰 — 책, 범주, 항목 — 다음 SubView 스위처 MarketTaxShippingTab 및 MarketDiscountsTab 이미 사용 세금 종류 및 가격표. 카테고리 및 항목 숙박 장애인 책이 선택될 때까지, 선택한 책의 이름과 버전 숙박 그들은 열려있는 동안 화면. labourMinutes는 화면에 가장 큰 필드를 deliberately입니다. 그것은 두 개의 일자리를 수행하는 하나의 번호 - 그것은 라인과 크기를 제공합니다 방문 - 그리고 그것은 전체 이유 작업 책은 가격 목록을 이길. 그래서 그것은 가격 앞에 그것의 자신의 란을, 그것의 자신의 Framed 구획을의 위에 가져옵니다 라이브 "1h 30m"의 엔트리 편집기, 그리고 위의 경고 테이블 계산 항목이 누락되었습니다. 가격 책 아무 기간도 추가 단계로 가격표이며 아무것도 없습니다. downstream는 당신이 일어난 것을 말할 수 있습니다. 또한 2개 조각을 지상은 없이 작동할 수 없었습니다: * * * * * * 프록시는이 경로를 덮지 않습니다. commerce/quotes는 catch-all을 가지고 있지만, /commerce/quotes에 배열해, 그래서 각 호출에는 404'd가 있을 것입니다 사이트 맵 새로운 루트 수출 PUT뿐만 아니라 GET / POSST / DELETE - 따옴표 경로 그것은에 모델링되지 않은 PUT 때문에 견적 업데이트 PATCH 및 모든 작업 책 업데이트는 @PutMapping이므로 복사 verbatim은 모든 읽기 작업을 수행하고 모든 저장 대답 405. - 앱/lib/serviceTaskBookApi.ts, 미러링 서비스TaskBookApi.java. 모든 ID는 두 방향으로 문자열입니다. defaultParts는 commerce offerings.uid 값, 19-digit unique rowid() 잃는 긴 JS 더블에 낮은 자리. BigDecimal은 수를 유지 — 와이어 mapper는 JS-safe serializer를 제공하고 BigDecimal을 혼자 나눕니다. 두 개의 API 행동은 양식을 형성하고 코드 옆에 기록됩니다. 그들 주위에 일. marketUid도 필터는Active = TRUE, 그래서 그것을 사용하여 허가 표면은 단지 당신이 가지고 있던 책을 결코 보여줄 수 없었다 은퇴; 이 목록은 시장 자체에 의해 필터 및 좁은. 그리고 null 필드는 "자외로"를 업데이트, 그래서 빈 숫자 입력은 null로 보내지는 것보다 omitted. 소스 수준의 계약 테스트에 의해 Pinned: 클라이언트의 경로 및 동사 ServiceTaskBookController의 매핑에 대한 프록시의 수출 동사 클라이언트의 용도와 문자열에 대한 ID 유형에 대한. 더 보기 SecurityService 체크 아웃없이 크로스 레포 반 건너뛰기; 나머지 항상 실행.
· SecurityService
Right-gated 작업 책 API
SW5 작업 3, 컨트롤러 반. 책, 범주, 작업 및 옵션을위한 CRUD, 더하기 GET /{bookUid}/tasks/by-code/{code} - 견적 또는 작업 주문보기 저장된 taskCode를 보유할 때 수행한다. 즉, 하나의 색인된 쿼리입니다. idx service task book code에 대하여, fetch-the-book-and-scan; 그것은 당 실행 수백 개의 카탈로그를 통해 라인 아이템은 왜 엔드포인트입니다. VIEW SERVICE WORK가 필요합니다. MANAGE SERVICE WORK가 필요합니다. 모두에 착륙 SW1와 이미 두 개의 게이트 POSController에 9 개의 서비스 엔드 포인트. 더 보기 컨트롤러이 하나 deliberately는 CommerceMarketController는 닮지 않습니다, 어떤 @PreAuthorize를 어디에서나 운반하고 세션이 있는지 묻습니다. 존재 - 같은 구멍 SW4는 주문 및 SW1에 발견 서비스 일에. ServiceTaskBookRightsGateTest 핀 모든 핸들러 및 별도의 핀이 없습니다 mutation은 오른쪽의 전망에 정착 (MANAGE는 VIEW의 CHILD입니다) 나무, 그래서 쓰기에 VIEW를 수용하는 것은 침묵 downgrade입니다) 그리고 그 핸들러 없습니다 고객의 VIEW OWN SERVICE WORK를 대안으로 받아들입니다. 테넌트는 세션에서 제공되며 서비스의 첫 번째로 전달됩니다. 인수, JPQL 내부의 사전이되는 곳. 아무것도 여기에로드 행하고 그 후에 그것을 검사합니다. path 변수는 문자열로 도착하고 parseUuid를 통해 이동, 그래서 변형 된 ID 봄 500보다는 400입니다. 'Not found'는 ORG에서 찾을 수 없습니다. 의 유일한 질문 저장소 질문과 단지 응답 콜러 자주 묻는 질문.
· kamo-shared-library
작업 책 서비스 org-scoped CRUD 및 코드 해상도
SW5 작업 3, 라이브러리 절반. ServiceTaskBook서비스는 책, 범주, org-scoped API 뒤에 작업 및 옵션, 및 resolveTaskByCode - taskCode를 저장할 때 따옴표 또는 작업 순서를 실행합니다. 즉, idx service task book code에 대한 단일 색인 쿼리를 통해 도달 ServiceTask의 직접 책 FK, fetch-the-book-then-scan. 모든 항목은 orgId를 첫 번째 인수로 가지고 손을 JPQL가 준비한 저장소. uid에 의해 아무것도 부하 및 체크 이후의 org; 그 모양은 여섯 개의 상거래 엔드 포인트를 만든 것입니다 SW1 이전에 크로스 텐더 읽기. 서비스TaskBook서비스ShapeTest 핀 모두 halves - 서명 규칙과 'every servicework @Query 이름 사이트맵 두 개의 저장소는 작업 1이 작성되지 않았다는 것을 필요로했다 : 카테고리 및 옵션은 자신의 org를 수행하지 않습니다, 그래서 그들의 org-scoped 읽기를 통해 가입 책 (선택권을 위한 2개의 hops). Ids 및 타임스탬프는 두 방향으로 문자열로 남깁니다. 오퍼링.uid 브라우저의 19-digit Long 및 JSON 번호는 두 배입니다. indexConversionResult.orderUid가 SW4의 문자열이 되는 트랩. 거래 안에서 볼지도를 읽습니다. 컨트롤러, 그래서 아무것도 오픈 인 뷰 숙박에 따라 달라집니다. 삭제는 캐스케이드보다 오히려 거부 : 여전히 가격 항목을 보유하는 책 그리고 여전히 작업이 모두 대답 409. 책은 다시 isActive / effectiveUntil, 모든 판매 라인 resolvable을 잎.
· kamo-internal
서비스 시장의 가격, 세금 및 계층
서비스 시장은 정확히 세 개의 탭을 가지고 - 개요, 공급 업체, 계약. 고객, 세금 및 배송 및 할인 및 가격 모두에 게이트 commerceType === 'RETAIL', 이는 세 개의 표면이 서비스 org의 필요성을 숨겼습니다. 세금 종류 (세금 및 배송의 하위보기), 가격 목록 (미세보기) 할인 및 가격) 및 계정 계층 (고객). 세 이동 이름 뒤에, SUPPORTS PRICING SURFACES, 그래서 이유 생활 규칙 옆에 수직을 추가하는 것은 하나의 편집입니다. 고객은 할인으로 여행해야 합니다: PriceList.customerTier 포인트 accountTier, 그래서 계층 표면 잎없이 가격 목록 해당 필드는 충전할 수 없습니다. 제품 및 재고 있음 RETAIL-only. 작업 책은 상품이 아닙니다. 카탈로그 및 서비스 org 빈 제품 그리드를 보여주는 것은 imply 그것은 하나를 채울 수 있습니다. Service-only task-book 탭 항목 추가 (lowercase-hyphen 키, 비록 시장 탭은 커버리지 테스트에 의해 경찰된다.). MarketTaskBookTab은 공지를 렌더링하는 placeholder; 다음의 승인 표면 토지 도매를 대체합니다.
· kamo-internal
청구에 대한 송금
"Unapplied money"은 payer가 주장에 붙어 없다는 것을 보냈습니다. queue는 볼 수 있습니다. POST INSURANCE PAYMENTS는 그것을 도달하는 방법 없이 가동. 선으로, 그 때문에 payer adjudicates. lump 요약 클레임은 절차가 거부되고 왜 대답할 수 없다. — 질문 denial-patterns queue는 대답하고 1개의 매력은 argue에 있습니다. 청구는 수에 의해 발견된다 payer 인용, 이는 유일한 식별자 송금. 그것을 태우고 선을 보는 것은 차이입니다. 청구에 대한 게시물 사이에 payer pay and one that looked similar. 선 공백을 제거하면 payer가 침입하지 않고 대화 상자는 다음과 같이 말합니다. 청구는 각 선이 그림을 나타날 때까지 열립니다. 그 문장 누군가는 호랑이를 입력하고 여전히 주장을 닫습니다. Amounts는 문자열을 통해 전체적인 방법을 유지합니다. 그들에게 "validate"를 넣으면 이진 부동점은 돈으로 다시, 0.1 + 0.2 청구 라인에 환자를 균형은 지불하고 이유를 말할 수 없습니다.
· SecurityService
수에 의해 청구를 찾기 payer 견적
송금은 청구를 해결해야하며 송금은 아무 것도 없습니다. 내부 ID - 전송 된 숫자 만. 이 봐도 돈은 송금 및 청구에 대한 사냥을 읽는 것을 의미합니다. 지불이 잘못 된 방법 인 눈. 선 및 게시 당 급여 중독 때문에 선에 대한 청구를 반환 선 당 입니다. 그런 번호가 없을 때 404 : "우리는 그 주장이 없습니다. number"는 누군가의 게시물 필요이며, 빈 성공 객체는 읽습니다. 그것에 아무것도 주장.
· kamo-internal
볼 수있는 4 가지 것들과 수행하지
각각의 작업 엔드 포인트, 클라이언트 함수, 그리고 아무도 사람에 대 한 그것을 도달. 주문 루프를 닫습니다. open-loops queue는 주문한 시험 때문에 존재합니다 아무도 chased는 진단을 놓은 고전적인 방법입니다 — 그리고 그것은 단지 일 수 있었습니다 읽기. queue nobody can clear 이다 한 사람 stop opening. 자주 묻는 질문 " 환자와 함께 검토 한 결과"와 "cancelled, 그들은 그것을 수행했다 다른 사람"은 동일한 행을 닫고 첫 번째는 누군가가 결과를 본다. 약물 중지. 지정된 목록에만 제공: 보고 약물은 다른 사람의 처방전이며이 연습은 기록 할 수 있습니다. 수 없습니다. 이유 - 완성 된 과정, 일관성 및 모든 상호 작용은 처방전을 끝내고, 마지막 2는 그것을 멈추어야 합니다 다시 수정. 포털 액세스 철회, 이제 계정 ID를 얻을 수 있습니다. 회사연혁 환자에 접근하는 것은 이미 단추 뒤에 보다는 산에, 그 때문에 첫 번째 질문은 어떤 사람이 그것에 묻습니다 — 그리고 누군가를 초대 이미 아무것도에 대한 작업 링크를 supersedes에 서명. 완성된 수출을 모으기. 시작, 보고 취소 및 취소 절대 다운로드하지 않는, 실행의 전체 지점입니다. 정의는 첫째로 fetched 및 파일은 그것에서 옵니다: 대량 수출은 당 1 NDJSON입니다 자원 유형 및 추측 ids는 조용히있는 레코드 방출을 일으킬 것입니다 완전한. 또한 fetchWaitingRoom를 제거, 아무것도 호출. PracticeDay패널 파생상품 당일 같은 세트가 이미 로드되었습니다. - 2 대신 1 라운드 여행, 그 외의 일정에 동의할 수 없습니다. 댓글은 이렇게 말합니다. 사용하지 않은 래퍼는 다음 사람이 감사에 누락 된 화면으로 읽습니다.
· kamo-shared-library
평평한 작업 책 추가
LabourMinutes를 수행 한 가격 작업 카탈로그 - 그 번호 모두 라인과 크기 모두 방문. ServiceLineItem.taskCode, SW3에 착륙, ServiceTask.code BY VALUE에 가입하고 FK에 의해하지 : 책은 버전이므로 판매된 선은 그것이 입장 후에도 판매될 때 무엇을 의미해야 합니다 repriced 또는 은퇴. ServiceTaskCategory 거울 ProductCategory 오히려 그것을 재사용하는 것보다 — ProductCategory는 ProductCategoryMapping을 통해 제공되므로 공유 한 나무에서 "Drain clearing"및 "Kitchen taps"를 넣을 것입니다. 사용 방법 창은 hr/timecard/MemberPayRate에서 들어갑니다. ServiceTask는 선택 사항을 통해 직접 책을 보유하고 있습니다. 범주: t.category.book는 implicit 가입, which Hibernate는 렌더링으로 내부 가입, 그래서 모든 uncategorised 작업은 "작업에서 침묵 이 책". columnDefinition은 모든 FK와 각 원소 수집에 열을 붙입니다. mapping에서 DDL를 수출해서 확인: 결합 란은 나르지 않습니다 DEFAULT, 그래서 unset FK는 임의 부모 ID를 발명 대신 null을 유지. 모든 저장소 읽기는 쿼리 내부의 org-scoped이며, 나중에 검사하지 않았습니다.
· InitializerService
Per-extension PBX 청구 스키마, 백필 및 카탈로그
PbxBillingSchemaMigration는 @Order(0)입니다. 더 보기 shared-library entity maps phone cost mode from the moment the build start, 그래서 JPA를 통해 OrgBillingPolicy를 로딩하는 모든 주자 - 이 런너를 주문한 후, 이전의 다이들은 전혀 실행되지 않습니다. "column ... 존재하지 않습니다"모든 실행을합니다. org extension billing days는 공공에 있으며, 그 자체의 스키마가 아닙니다. voip 테이블입니다. (org id, day, addon code, subscription uid)에 독특합니다. 우편과 같은 것보다 더 넓은 열, 그래서 두 개의 청구 그룹과 함께 org 유지 두 감사는 오히려 다른 한 개 이상. subscription uid는 아닙니다 NULL은 정확하게 SQL의 null-are-distinct 규칙은 그 인덱스를 물리칠 수 없습니다. ****** ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 할당을 복구 InstanceSyncService는 모든 청소에 지워졌습니다. - 9 명의 회원이 한 명과 모든 20 세 확장 행은 null을 읽습니다. 단지 공백을 채웁니다: config 측 unconstrained extension string에 가입하여 약한 기록이며 결코 설정된 id를 덮습니다. PbxAddonCatalogMigration씨는 이미 모든 카탈로그에 추가합니다 메일을 판매, EMAIL HOSTING 행에 org, 시장 및 호환 계획. 두가 때문에 hardcoded id에 의해 오히려 방법 10ants는 같은 코드를 추가합니다. 카모크릭 Loader는 그들을 너무 얻고, 카탈로그는 여기에에서 시드 - 그것은 단지, 그래서 혼자 수정 편집 이미 데이터베이스에 없습니다.
· BillingService
확장에 의한 빌 전화 서비스
PricingModel.PER EXTENSION, 자체 예약 수량 키, 할당자, nightly reconciler, 제거 게이트 및 요약 API - 전화 쌍둥이 per-mailbox 작업, 데이터가 어디에나 다릅니다. Multi-instance는 모든 것을 통해 실행되는 차이입니다. org는 실행할 수 있습니다. KamoPBX 서버와 한 번에 RingCentral 서버, 그래서 둘 다 애드온에서 빌 수 있습니다 같은 달: allocator는 코드 당 구독 당 카운트를 반환, 그리고 모든 구독은 아무것도 속성되지 않은 0과 함께 코드를 모두 수행합니다. 이름 * unused 부호를 특별한 보다는 오히려 정규적인 경로로 몰기 메일 reconciler 필요. PER EXTENSION은 PER MAILBOX의 재사용이 아니라 자체 가격표입니다. extensions의 밑에 조사: 오히려 mailboxes 보다는:. 두 개의 reconcilers 실행 독립적으로 다른 수량을 방해 할 수 없습니다. 라이센스, 결코 미터로 재는 - 미터로 재는 줄무늬 가격은 양을 강직하고 실패합니다 구독 호출. PhoneCostMode는 같은 이유로 MailCostMode의 sibling입니다. mail cost mode 는 열 이름 false 를 만들고 조용히 이동할 것입니다 소유자가 우편을 지불하는 것을 변경했을 때 전화 돈. 기여는 다음과 같습니다. 할당 된 회원 - 확장은 기본 개념이 필요하지 않습니다. MEMBER VOIP CONFIG.MEMBER ID는 독특하고 회원VoipConfigController 반환 409 두 번째 주장에, 그래서 링크는 이미 양쪽에 독점적입니다. org extension billing days는 구독뿐만 아니라 낮에도 키워집니다. 이름 * 메일 테이블은 아닙니다, 그래서 밑에 GROUP PAYS OWN 그것의 두번째 청구 그룹 첫 번째를 덮고 오늘의 감사 행은 각 그룹에 잘못되었지만 마지막으로. 대문자 이외의 후속 기록. shared-lib voip.billing 패키지는 @EnableJpaRepositories에 명명됩니다. 목록은 명시되어 있으며 실패 모드는 시작을 거부하는 서비스입니다.
· kamo-marketing
Give the phone add-ons a phone icon
PER_EXTENSION already renders as "extension/month" - addOnUnitLabel handles it and needs no change. The icon map does: it is keyed on the lowercased catalog code, and an unmatched key is not an error, it silently falls back to a lightning bolt. Only the two new PBX codes are added here. Three older entries in that map (kamo_email_hosting, video_conferencing, additional_storage) do not match their seeded codes either and are left alone rather than guessed at.
· kamo-internal
확장 비용, 확장이 관리되는 곳
ExtensionUsagePanel은 mailbox와 저장판 옆에 stats 탭에: 클래스별로 계산, 카탈로그 속도, 월별 합계 및 일반 규칙 한국어 두 클래스 규칙은 한 번에 볼 수 있으므로, org는 실행할 수 있기 때문에 KamoPBX 서버와 같은 달에 RingCentral 서버 - 케이스 메일이 될 수 있습니다 결코 생성. 무료 숫자는 청구 가능한 한 동일한 무게를 부여합니다. 장비는 모든 클래스에서 무료, 및 할당 된 확장 - 큐, IVRs, 링 그룹 - 제 3 자 법에 따라 무료입니다. 둘 다 입니다 복사에서 asserted 보다는 오히려 집계기에 의해 측정하는. add-a-phone-server Picker에서 수행되는 두 가지 규칙과 이메일은 둘 다 어려운 방법을 배웠기 때문에 작동합니다. 그것은 열려, 그래서 청구 outage는 org 중앙 이동을 방해 할 수 없습니다. 그리고 공급자 유형을 결코 잠그지 마십시오 org는 이미 라이브 인스턴스를 실행 - 전화 서버와 모든 4 orgs 오늘 추가 코드를 모두 보유하지 않고 서버에게 이미 알려줍니다. add-on을 사용해야 합니다. 잠긴 카드는 이유로 표시됩니다. 단순히 밖으로 회색 보다는 오히려 그것에. 요금은 카탈로그에서 제공, 결코 hardcoded : UI로 작성된 비율 카탈로그가 변경되면 실패하지 않습니다. 이름 *.
· KlusterServices
Queue timeout 과 "press 0" 모두는 voicemail을 통해 가을
손 압연 다이얼()+를 대체합니다. app queue를 가진 Goto queue 반복. 관련 기사 인자는 DTMF: 자리수는 다이얼플랜과 일치하지 않습니다() 실행, 그래서 "보류에서 동안 0을 누르십시오"모든에서 Dial()에 내장 할 수 없습니다. 더 보기 queue's `context = kamo-queue-exit` 설정은 가능한 것. 확장 -> 그 확장에 전달 1 또는 2 -> 큐 0 -> straight to voicemail, 인사 또는 홀에서 10분 -> 음성메일 나쁜 exten -> "invalid"진짜, 그 후 큐 Main-line voicemail은 mailbox 8100이며, 직원 중 하나가 아닙니다. mailboxes 그래서 메인 라인 메시지는 누군가의 개인 voicemail에 착륙하지 않습니다. 인사는 소리/ VoiceMail()에서 재생됩니다. `s`로 호출합니다. 두 가지 발견은 다음과 같습니다. - ***********에 설치된 복사본은 조용히 음성 메일 리로드와 다음 통화 사이에 REMOVED, 및 VoiceMail은 떨어졌다 내장 된 "창에 사람 ... 사용할 수 없습니다. 더 보기 spool는 app voicemail/FreePBX에 의해 관리됩니다; 소리/는 아닙니다. - `s` 옵션은 인사를 건너와 지시를 건너,에도 불구하고 docs만 설명합니다. `su`의 녹음이 절대로 모두에서 재생. 재생 + `s`는 녹음 -> beep -> 정확하게 기록합니다. 검증된 라이브, 각 경로는 별도로: - 큐 타임 아웃 : queue log EXITWITHTIMEOUT, 다음 CDR dcontext=kamo-voicemail lastapp=Playback custom/kamocrm-highcallv..., userfield QS:TIMEOUT - 프레스 0: queue log EXITWITHKEY|링 멤버에 RINGCANCELED 0, 같은 voicemail 다리 - 기록 + 상점: mailbox 8100에 쓴 msg0000.gsm - 답변 : queue log CONNECT PJSIP/8080 -> 회사연혁 두 가지 테스트 노트 유지. `channel starte`는 ~30s에서 호출합니다. 더 이상 테스트 truncates 및 다이얼 플랜 오류처럼 보입니다. 그리고 침묵하는 시험 기록은 maxsilence=10에 의해, 그래서 빈 INBOX는 의미하지 않습니다 기록은 깨져있다 — 일시적으로 maxsilence=0 및 restoring 설정에 의해 입증. ************** 추가 queue outcomes는 그렇지 않으면 queue log 밖에 보이지 않는.
· kamo-shared-library
3자 서버 확장을 계산하지 않습니다
Queues, IVRs, 반지 그룹 및 예비는 연장 아무도에 할당됩니다, 그리고 제 3 자 규칙의 밑에 그들은 무료입니다 - 1 개의 생산 org의 12 17개의 쓸모 있는 연장. classify()는 그들 조용히 떨어졌다, 그래서 수 존재하지 않는 곳에 stats panel은 자유롭지 않다는 주장만 할 수 있었습니다. 오히려 그것을 보여주기 보다는. 동일한 dedup 키로 계산 된 청구 가능한 경로 사용, 그래서 무료 번호 행을 두 배로 할 수 없습니다.
· kamo-shared-library
계산 가능한 전화 확장
주소: PbxBillingClass 배기 VoipProviderType 스위치 및 기본 팔, OrgPbxBillingAggregator 없음 (봄 스테레오 타입 없음 - BillingService는 반란을 선언) 및 일일 감사 스냅 샷. 하나의 구조 차이는 모든 downstream을 통해 실행됩니다. org email 제공자 org id에 독특합니다, 그래서 정확히 하나의 메일 add-on은 비-zero를 빌릴 수 있습니다. VOIP PROVIDER INSTANCE는 org 당 많은 행입니다, 그래서 org는 KamoPBX를 실행할 수 있습니다 한 번에 RingCentral과 같은 달에 Add-ons 청구서 모두. 고장은 따라서 1개의 평면 목록은 연장 당 종류를 나르고, countByClass () 드라이브 특별한 경우보다 평범한 경로를 통해 0에 사용되지 않는 코드. VoipProviderType은 EnumType.ORDINAL이므로 아무 것도 부과되지 않습니다. 시험은 순서 뿐 아니라 분류를 핀으로 꼿습니다. FREE PBX는 제 3 자로 분류합니다 - 피커는 온프레미스 PBX로 제공합니다. 고객의 자신의 Asterisk입니다. KAMO PBX는 호스팅형입니다. 그리고 KAMO PBX 인스턴스가 존재하지 않았기 때문에 KamoPBXProvider는 여전히에서 던졌습니다. 모든 방법, PBX HOSTING 정확한 청구는 오늘 전혀 없습니다. 할당 기록은 모두 읽습니다 - *********** 및 MEMBER VOIP CONFIG - 회원 전화 설정 화면이 모두 쓰기 때문에 그들의 조합은 관리자가 설정하는 것을 정확히. 돈을 결정하는 번호 하나 열에 멈춰서는 안됩니다 배경 청소는 0, 정확하게 할 수 있습니다 InstanceSyncService가 수행 한 것. 제품 정보 BillingDay는 구독뿐만 아니라 일 및 코드에 열쇠가됩니다. 두 개의 청구 그룹과 함께 org는 두 개의 감사 행을 1 개 과잉 대신 유지 기타.
· KlusterServices
잡아당기기 음악 queue 반지 8000와 8080 동시에
'kamocrm-hold` MOH 클래스로 업로드 된 8 개의 홀트 트랙, shuffled. 더 보기 무작위 주문은 FreePBX의 `music` 테이블의 행에 `random=1`에서 옵니다. `sort=random`를 musiconhold additional.conf로 생성합니다. 그것은 DB에서, conf에, 또는 다음 FreePBX는 그것을 과잉합니다. 인사 후 여정: 확장 -> 그 확장에 전달 (unchanged) 1 또는 2 -> 큐 타임아웃 -> 큐 나쁜 exten -> "invalid"진짜, 그 후 큐 큐는 루프에서 ***** * *****, 그래서 한 번에 두 개의 링, 먼저 승리에 응답, 그리고 칭거는 음악을 잡아 ringback 대신에. 회원은 PJSIP 엔드포인트가 아닌 PURPOSE: FreePBX의 확장 다이얼플랜을 통해 이동 각 확장의 링 타이머를 적용하고 그 사람의 호출기를 손으로 음성 메일, 그것은 무한하게 링의 반대입니다. 루프에는 요청대로 캡이 없습니다. 문제는 ExecIf입니다. NOANSWER는 우리가 진짜로 가득 차있는 timeout를 위해 배열합니다. CHANUNAVAIL (신체 없음) 등록), CONGESTION 및 BUSY 모든 반환 milliseconds, 그래서없이 MusicOnHold는 Goto가 꽉 회전된다. 회원과의 상호작용 deregistered: CPU의 1 초와 큐에 있는 45 초의 맞은편에 24의 통나무 선. 또한 WaitExten의 우아한 창을 재생 하 여 음악을 잡아, 그래서 handover에서 queue에 인사는 침묵이 없습니다. 검증된 살아있는: PJSIP/8080는 밑에 반지 국가에서 관찰했습니다 **************** 링의 콜러 채널. 오디오는 ConfigMap - 인사 1.1 MB 플러스 7.7 MB의 트랙은 잘 etcd 객체 제한을 과거에. 둘 다 asterisk-lib hostPath에 살고 변환 명령은 그 이름을 지정하는 글로벌 옆에 문서화됩니다.
· kamo-internal
하나의 메시지에 이모티콘, 그리고 당신이 정확한 메시지를
회원은 개별 채팅에 모두 요청했습니다. 그들은 같은 per-message 메뉴에 착륙 이미 창을 가지고, 복사 및 삭제. Reactions는 거품 아래 칩 바로 렌더링합니다. - 이모티콘, 얼마나 많은 사람들이 그것을 사용, 그리고 뷰어가 그들 중 하나인지, 칩 자체로 toggle 그래서 반응하고 un-reacting는 2개 보다는 오히려 1개의 통제입니다. reacted, 해결된 툴팁 이름 세션 회원 목록에 대해 이미 창을 보유하고 있습니다. "+"의 산책은 픽업을 엽니 다 이미 바가 켜져 있습니다. 반응이 없는 메시지는 아직 지나지 않습니다. 메뉴. 피커는 실제로 6 명으로 열고 기존에 확장 320px 패널이 320px 채팅 창에 떨어졌다 때문에 수요에 대해 검색 할 수 있습니다. 빠른 반응. 편집은 SENDER가 쓴 것을 붙은 상자를 위해 거품을 교환합니다 - OriginalText, not 번역 독자가 찾고있을 수 있습니다 — Enter to save and Escape to cancel. 기타 창 크롬에 도달하지 않고, 전체 채팅을 닫을 것 취소된 편집에. 편집 된 메시지는 모두 "(edited)"를 운반합니다. 누군가가 솔직히 읽은 후에 편집합니다; 그 disclosure는 왜, unsend와는 달리, 입니다 아직도 본 메시지에 제공. 대화가 누군가가 편집되었는지 - "...is 편집" 표시는 웹에서 태핑 작업과 아무것도하지 않았기 때문에 두 끝에서 존재했다. 그것은. 수신기가 stale을 맑게 하기 때문에, 간격에 등록 및 재 출판 3 초 후에 지시자와 긴 개정은 그렇지 않으면 멈춰야 합니다. 조직의 채팅 정책이 동결 될 때 모두 제어가 작곡가로 오프됩니다. 회원: 서버의 동일한 게이트를 통해 이동, 그리고 그 제어 제공 거절하지 않고 악화됩니다. @kamo/chat-core 0.1.8 및 @kamo/realtime 0.1.1를 가지고 가십시오.
· MediaService
이모티콘으로 메시지에 반응하고 전송한 것을 수정하십시오
POST *********** 세트 또는 콜러의 이모티콘과 답변을 삭제 메시지의 전체 반응 세트, 그래서 서버의 자체가 융합 한 클라이언트 대신 자신의 추측에 상태. Reacting은 말하기로 처리됩니다: 같은 세션 멤버쉽 확인 및 같은 조직 채팅 정책 전송으로, 회원이 여기에 회신 할 수 없기 때문에 대답할 수 없습니다. 이모티콘 자체는 신뢰할 수 없습니다. 그것은 다른 사람의 밑에 verbatim 렌더링됩니다 모두의 대화에서 메시지, 그래서 문은 흰색 목록 모양과 구조 : 분할 Zero-width 가입자, 세그먼트는 하나의 pictograph를 보유 할 수 없습니다. 그것은 가족이나 피부 톤 직업 및 거부 ☸, 이는 텍스트와 함께 한 두 가지 반응, lone 가입자 및 절반 플래그. PATCH /api/media/messages/{id} 메시지 수정. 어느 누구든지에 문지르지 않는 그것을 읽었다, 어느 한 가지 규칙을 얻지 않는 것은 - 왜 공유 -library 커밋을 참조하십시오 두 가지 다릅니다. 파일이 없는 메시지에 공백체를 거부합니다. (메시지를 비우는 것은 그 자체의 규칙을 가지고 있지 않은 경우, 이미 외부에 전달 된 메시지를 거부 소셜 플랫폼 (여기에 도달 할 수 있음), 메시지의 캐시 된 번역을 삭제, 그리고 무슨 말을 사용. 또한: MESSAGE DELETED와 ATTACHMENT REVOKED는 이제 `id`와 `messageId`를 수행한다. 릴레이 ChatMessageDto를 통해 모든 프레임을 프로젝트, 메시지가없는 필드가 없습니다. id로 브라우저에 도달: null 과 모든 가입자는 그들을 버려 — unsent message 다시로드 될 때까지 다른 측면의 화면에 머물. 릴레이의 javadoc는 이제 큰 소리를 썼습니다. 그것은 허용 목록입니다, 그 때문에 그것은 가능한 침묵의 드롭을 만들었습니다.
· kamo-shared-library
Per-message 이모티콘 반응, 그리고 메시지는 그것의 sender를 정확할 수 있습니다
두 가지 회원은 개별 채팅에 대해 물었다 : 대화에서 이모티콘 누구나 단일 메시지에 넣을 수 있으며 이미 전송 된 메시지를 수정 할 수있는 능력. MEDIA OBJ REACTIONS는 이모티콘 당 숫자가 아닌 (message, member, emoji) 당 한 줄입니다. 모든 질문에 대한 답변은 WHO에 관한 것입니다 : 칩은 토글이므로 뷰어가 이미 있는지 알고, 그리고 그 툴팁 이름을 반응. 더 보기 독특한 constraint는 레이싱 더블 클릭 아래 toggle 안전을 만드는 것입니다. 편집은 현재 몸, 우표 DATE EDITED로 MediaObjMsg.message를 유지하고, 파일을 MEDIA OBJ MSG EDITS로 대체되는 신체. 그 테이블은 왜 편집이 되지 않는 대답입니다. "모든 사람이 본 것"에 문지르지 않은 방법. Unsend는 읽힌 단어를 읽습니다. 사실 후에 혼란은 독자의 뒤에 rewritten 대화를 멈추는 것입니다 뒤로; 다른 한편으로 typo는, 누군가가 그것을 읽은 후에 거의 항상 주의되고, 같은 문은 그들이 원할 때 정확히 보정을 거부 할 것입니다. 공시 지불 그것은 대신 - 모든 독자는 메시지가 편집 된 것을 말하고, 말하는 데 사용되는 것은 보관 오히려 overwritten 보다는. ChatMessageDto는 필드를 모두 획득합니다. DTO는 문서가 아닙니다. MediaService에서 STOMP 릴레이에 대한 NATS는 고정 필드 목록을 재 emits, 그래서 필드는 결코 브라우저에 도달하지 않습니다.
· KlusterServices
녹음된 인사, 다이얼로 확장, 1/2에서 연산자
녹음 된 인트로 음악에 보류 패턴을 대체 : * * * * * * 인사를하고 듣고 동시에, 콜러는 첫번째 초에서 다이얼을 할 수 있습니다. 재생() 파일이 종료 될 때까지 keypresses를 무시합니다. - 무시되는 70 초. - 1과 2 모두 연산자 확장으로 이동합니다. - 인사가 끝나지 않는 것은 연산자에 간다, 후 4-second grace window 그래서 마지막 단어에 다이얼을 시작 콜러 수 있습니다 끝; 두번째 손가락이 우리가 위에 이동한 후에 도착하지 않고. - 직접 다이얼 일치 [3-9]XXX, not XXXX. 와 XXXX 하나의 "1"도 4 자리 확장의 부분 일치, 그래서 Asterisk를 통해 앉아 있어야합니다 TIMEOUT(digit) 을 정의하기 전에 호출자는 4 초를 듣습니다. 의 침묵. 비용은 1과 2가 예약되어 있으므로 연장이 시작할 수 없습니다. 그들과 함께 - 메뉴가 이미 필요합니다. 연장은 2523 -> 8912 (Briana) 및 2000 -> 8000 (Erik)을 재수했습니다. 더 보기 WebRTC 엔드 포인트 블록은 확장 NUMBER에 의해 키 입력되므로 조용히 재수 확장을 가집니다: 그것은 아직도 WS에 등록, 하지만 DTLS/ICE 없이 미디어는 결코 설치하지 않고 콜러는 연결 통화를 얻지 않습니다. 오디오. 8000은 2000만큼 모든 블록이 없었다 - 그리고 지금은 목적지입니다 1, 다이얼 2, 또는 아무것도하지 않는 모든 호출기, 그래서 하나를 얻을 수 있었다. 인사말 오디오는 이 ConfigMap에서 아닙니다: 1.1 MB에서 그것은 etcd를 불어를 것입니다 객체 제한. 그것은 asterisk-lib hostPath와 변환 명령에 살고 그 이름 옆에 문서화되어 있습니다. 마지막에 확인 된 라이브 엔드 : 인사 놀이 (BackGround custom/kamocrm-main-intro); 1 -> from-did-direct 8000; 8912 -> 모든 3 메시지 intact와 음성 메일; un unknown extension plays pbx-invalid 그때 falls 에 8000.
· KlusterServices
Inbound Auto-attendant - 보유 음악 + 다이얼-by-extension
인바운드 호출은 어디로 갈 수 없었다 : `incoming` 테이블은 완전히 빈, 그래서 배달 된 전화는 죽은 끝났습니다. 참석자 상황에 추가 두 가지 다행히도 읽습니다. waitExten의 m() 옵션은 메커니즘입니다. - 그것은 음악에 기록 클래스와 손가락을 동시에 수집합니다. 배경()/Playback() 종료 파일 및 MusicOnHold()는 아무것도 수집하므로 "음악을 할 수 없습니다. 콜러 다이얼 IVR 단위는 이 상자에 설치되지 않습니다 (ivr details 없음 테이블) 음악이 아닌 기록 된 발표를 원합니다. 위에 쓰여진 것보다 grep guard의 밑에 extensions custom.conf에 찬성 그것: kamo-asterisk 지원은 동일한 파일에 있는 감적 한계 구획을 소유합니다 byte-for-byte 이외의 모든 것을 보존합니다. 또한 /var/log/asterisk/cdr-csv를 생성합니다. cdr csv는 ERROR *and*를 기록했습니다. 모든 통화 법에 대한 경고는 그 디렉토리가 이미지에서 부패하기 때문에. MySQL CDR은 우리가 읽은 것을 읽었다는 것을 읽었습니다, 그러나 그것을 매장했습니다 Asterisk 로그 - 호출 오류를 진단하는 것과 같은 로그. 검증 된 라이브 : 참석자 답변 및 대기 오염 (45, m (기본)); invalid extension plays pbx-invalid and loops back to the 음악; 유효한 확장은 댄디 방향과 rang PJSIP/8080 (ANSWERED, 20s)에 도달합니다. 더 보기 ATTENDANT TRIES 카운터는 레이블에서 초기화됩니다. 그것이 왼쪽없이 $[ + 1] 다음 손상된 파스 오류 GotoIf, 몹시 실패 대신 어딘가에 전화를 보내. 인바운드 루트 및 사용자 정의 목적지는 FreePBX MariaDB에서 라이브 (persistent StatefulSet)는 여기에 재현되지 않습니다.
· InitializerService
Org 당 한 공유 캘린더, 회원 당 1 주
프로비저닝은 그 중 어떤 것도 없었다, 그래서 두 개의 동시 첫 번째 부하 모두 삽입. 이미 만든 것을 붕괴 — 20 중복 행 7개의 조직 및 13명의 회원, 가장 오래된 승리, 잃어버린 삭제되지 않고 1개의 재점에 점유하는 것은 첫번째 — 그 후에 추가합니다 두 번째 행이 불가능하다는 달력별 고유 지수. Invariant가 PROVISIONED 달력에 있기 때문에 부분적인 : 일반 고유 조직의 색인은 회원의 소유를 금지하고, 하나에 회원은 추가 달력을 무료로 만들 수 있습니다.
· kamo-internal
비상사태 접근 및 문 마지막 2개의 표면을 검토하십시오
Break-glass review endpoint에는 아무것도 불린 클라이언트 기능이 있었습니다: 매 비상 전세 액세스 기록 및 화면이 없습니다. · break-glass nobody 리뷰는 통제가 아닌 감사 트레일입니다. 왜 보조금이 첫 번째 장소에서 시간 상자 및 이유가 있는지 반대합니다. 그것은 기록 사무실, 수락 표면에 여섯 번째 탭이며, 그것은 보여줍니다 명시된 이유 verbatim — 그 문장은 검토의 전체 물질입니다, 그리고 그것이 아무것도 결정의 요약 된 버전. 누락 된 두 개의 문. break-glass 단추는 지금 제안됩니다 BREAK GLASS PATIENT ACCESS를 보유하고 있는 역할; 누구에게도 볼 수 없는 누군가에게 보여주기 use 그것 teachinges 그들 the refusal 이다 arbitrary, 언제 정직한 대답 이다 그들의 역할은 비상 액세스가 포함되지 않습니다 - 그래서 그들은 그 문장을 얻을 대신. 그리고 공개 회계는 자신의 세그먼트 뒤에 VIEW DISCLOSURE ACCOUNTING: 환자를 위한 사본을 생성하고 읽고 그들의 기록의 ledger는 이미 다른 작업입니다. 그것은 26 명의 임상 권리의 마지막 사람이 도달 할 수 있습니다.
· kamo-internal
작업을 발견 한 큐의 주장을 제기하고 보내
수익주기는 7 개의 큐를 읽고 주장을 제기 할 수 없습니다. 현재 각 글 화면에 사는 것보다 오히려 그것을 위해 필요성을 표면이 끄는 그것의 자신의. "Never Charge"는 청구 및 명시되지 않은 절차의 목록입니다. 이유 — 아무것도 실패하지 않고 아무것도 아무도 말했다 — 그래서 유용한 것 외에 각 행은 책임 창조입니다. 행은 한 번 큐를 나타낸다. 큐의 포인트입니다. 전송은 여전히 DRAFT에서 청구에만 제공됩니다. 자주 묻는 질문 연습이 두 번 지불하고 다시, 그리고 payer의 복제를 얻는 방법 논리는 not something to rely on noticing. 확인은 주장은 초안이며 보내기 전에 확인하기 위해, 두 단계가 서로 분리되어 "raised" 혼자 떠나기 때문에 사람들은 그것을 payer로 갔다. 둘 다 행동은 MANAGE CLAIMS 없이 absent 입니다. Refusals는 서버의 소유를 수행합니다. 문장, 자기 지불 제한 또는 누락 된 권한의 이름을 - 하나는 이 스크린 보다는 더 많은 사용은 발명될 수 있었습니다.
· kamo-internal
환자의 세부 정보
세부사항은 한 번 입력되고 결코 고쳐질 수 있었습니다. 패널은 요약 아래 앉아 대신 설정 화면에서, 순간 누군가가 misspelt를 통지하기 때문에 이름은 그들이 그것을 찾고있는 순간이다 — 그리고 그것은 전혀 렌더링 EDIT PATIENT DEMOGRAPHICS 없이. 사용자가 실제로 변경된 필드만 전송됩니다. 서버는 absent를 떠납니다 혼자서, 그리고 무엇에 대한 확산은 연습에서 진실을 만든다: 모든 열을 렌더링하지 않는 화면은 조용히 그것을 비우지 못합니다. 미츠. re-index 결과는 저장하기 전에 명시되어 있습니다. 이름 또는 날짜 re-files 환자를 duplicate 검사 및 레코드 요청에 대한 변경 다른 관행; 이렇게 말하지 않고, 결혼한 이름은 화장품과 결과를 봅니다 환자는 더 이상 사용하지 않는 이름으로만 찾을 수 있습니다. MRN는 보이며 편집 할 수 없습니다. 그것은 밖에 세계가이 이름을 사용하는 방법 사람, 그리고 renumbering는 각 참고 payer, 실험실 및 이전 편지를 끊습니다 현재 위치.

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