İçeriye geçin
KAMOUniverse

Değişiklik Günlüğü

Yeni ne var?

Gemideki her iyileştirme.

  1. · VOIPService

    Persist aramalar ve ortak aramalar, metinler ve sesmail ile

    Aramalar hiçbir zaman hiçbir yere kaydedilmedi – VoipCall EventService bir NATS etkinliği yayınladı Tarayıcı için ve hiçbir şey tutmadı ve RECORDINGS sadece sesin ne zaman olduğu ortaya çıktı Yakalandı. per-instance senkronizasyonu şimdi TelefonProvider aracılığıyla tarih arar Özet ve tezler PHONE CALL LOG, anahtarlandı (instance, sağlayıcı id). FreePBX ve Microsoft Teams için çalışan tek yol, ne de Bu, webhook'u arayın. süpürücü tek yazardır. RingCentral webhook'tan da nefret etmek Deneyildi ve kaldırıldı: bildirim telephonySessionId while the notification call-history API farklı bir kayıt id döndürür, bu yüzden iki yazar iki tane üretti Bir çağrı için satırlar ve iki zaman girişleri. Çağrılar sadece bu uzatmanın aslında üzerinde olduğu zaman bir uzatmaya atılır. Çağrı. RingCentral'in son noktası uzatma /~ ve argümanı görmezden gelir, bu yüzden döngüleme uzatmaya göre, her üyenin çağrılarını hangisine bir tane olursa olsun döngü son ziyaret etti. Kayıt boşlukları kayıt bakımı aracılığıyla sayfa başına çözülebilir, aynı zamanda aynı zamanda Yumuşak telefon tarihinin zenginleştirilmesi - sekme olmadan bir kayıt bilir Var ama oynayamıyor. Texts link at send/receive; sespostaları senkronizasyonda bağlantı.

  2. · InitializerService

    Schema ve iletişim noktası tohum

    Hibernate, paylaşılan varlıklardan üç yeni tablo yaratır; bu ekliyor Ne ifade edemez - çoğu açık açık açık olan kısmi eşsiz indeks İletişim noktası penceresi (lead, slot) ve DESC indeksleri için kapsar Zaman çizelgesinin anahtar başlangıç tarama. Tohum her lider için ilk pencere açar, indeksi önceden ilan eder. Değil İletişim geri yükleme: tarihsel çağrı veya mesaj hiçbir şekilde ilişkilendirilir Her şey. Önceden gelişmekte olan bir liderlik olmadan, hiç bir iletişim noktası yoktur ve bunu yapabilirdi Asla gelen bir çağrıyla karşılaşma, bu yüzden her sekme sonsuza kadar boş kalacak. LeadContactPointService üzerinden bir yığın INSERT yerine çalışır.SELECT böylece Tam olarak kanonikleşmenin bir uygulaması var. Bir SQL ikizi olurdu Re-derive digit striptiz, NANP kullanımı, uzatma zemini ve adresi Şaşırtıcı değil ve daha sonraki herhangi bir ayrım görünmez olurdu - tohumlanmış satırlar olurdu Sadece canlı trafiği durdurun. Üretime karşı uygulanan: 45 üzerinden açılan 66 iletişim noktası.

  3. · kamo-shared-library

    Point-in-time contact-point index ve iletişim bağlantıları

    Lider İletişim sekmesinden gelen omurgayı ekleyin. LEAD CONTACT POINTS her telefon numarası ve bir liderin sahip olduğu e-postayı kaydeder, Aktif From/aktifTo ile bir pencere olarak. LEAD COMMUNICATIONS, dayanıklı olanı kaydeder Bir lider ve bir çağrı arasındaki bağlantı, sesmail, metin veya e-posta, yazılı Şu anda iletişim noktalarına karşı çıkıyor - bu yüzden değişen Bir liderlik numarası gelecekteki trafiği sadece bağlar ve tam olarak olduğu gibi tarihi terk eder. PHONE CALL LOG, platformun asla sahip olmadığı çağrı kaydıdır: RECORDINGS sadece bir tane var Ses yakalandığında, bu yüzden kaçırılmış ve tanınmamış aramalar iz bırakmamıştır. İletişimCanon, "aynı sayı"nın tek tanımıdır. Platform; LeadController.canonical Telefon şimdi delegeler o kadar tersine bakmak Ve iletişim eşleştirmesi aynı fikirde olamaz. LeadContactPointService ve LeadContactionLinker kasıtlı olarak değildir stereotipler - paylaşılan bir @Service'in bir repository'ye ihtiyacı yok Paketi eklememiş olan her hizmette, hangi üretime alındı Üç kez. Kendi hizmetleri fasulyeleri ilan eder; LeadService onları alır @Autoteld(required=false) bu yüzden hala her yerde teller.

  4. · MediaService

    Demo yakalama rezervasyon adımdan önce yol açar

    Pazarlama sitesinin demo formu toplanan isim, e-posta, şirket, şirket büyüklüğü, Endüstri ve bir mesaj, sonra kimseye söylemeden planlamaya ilerledi. Baş yaratımı sadece ************ içinde yaşadı, bu yüzden Bir rezervasyon tamamlamayan her ziyaretçi - her ziyaretçi dahil Hiçbir erişilebilirlik yayınlanmazken - el ele geçirildikten sonra silindi Detaylar. - POST ******************** liderliği kendi başına yazar. Kendin veya X-Public-Chat-Org-Id Title APIService pullarından geliyor Doğrulanmış anahtar, asla vücuttan. - FindOrCreatePublicLead şu anda tüm üç baş yazma yolu kamusal yüzeyler (demo formu, program, katılmak), bu yüzden bir ziyaretçi bir lider üretir Ancak tamamlandıkları birçok adım. org's "KamoCRM" / "Demo İstek" satıcı ürünü ve piyasayı o satıcıdan alır ve rotalar LeadService.createLead, varlığı doğrudan kurtarmak yerine - Eski inline hiçbir tarih sırasını ve hayır LEAD CREATED olayı yaratmadı, bu yüzden bunlar Hiçbir zaman zaten açık bir ızgarada görünmedi. - Şirket büyüklüğü, endüstri ve ziyaretçinin mesajı liderlik tarihi olarak tutuluyor Giriş; Başın bunlardan herhangi biri için sütunu yoktur ve onlar bir parçadır satış elemanı aslında okur. - GET /api/public/webinar/tipler, bir kamu sayfasının türü boşluğa izin verir Zor bir kopya taşımaktan ve slot / kullanılabilir şimdi de geri döner Mevcut Zamanlar - aynı erişilebilirlik kendi ya dag’in aleyhine çözüldü Planlanan birStartTime olarak geri gönderilebilecek zaman bölgesi.

  5. · kamo-shared-library

    Public demo-request, ilkelleri yakalamaya liderlik ediyor

    Pazarlama sitesindeki demo formunda dolduran bir ziyaretçi, ancak asla bir zaman kitap okumaz Hiçbir iz bırakma: Lider sadece rezervasyon işlemi içinde yazılmıştı. Önün üç parçaya ihtiyacı var kütüphane yoktu. - ************ maç tekrarlanan bir geri dönüş Aynı formu zaten üretti. Scoped to the satıcılar product rather than than than than Sadece e-postaya, böylece anonim bir form asla kabul edemez (ve re-stamp) bir liderlik Bu adres için yaratılan personel. - PublicWebinarDateSlotsDTO: kullanılabilirlik mutlak anında çözüldü. The The The The The The The The depolama alanı yerel bir tarih artı hiçbir bölge ile bir duvar saat zamanı, hangi bir bölgeye Tarayıcı, önceden belirlenmiş birStartTime'a dönüşemez. - PublicWebinarTypeDTO: a webinar type without the presenter roster, so a public public. Sayfa, mevcut e-posta adreslerini sızdırmadan türü keşfedebilir.

  6. · kamo-internal

    Kayıt Sağlayıcısı navigasyonda kayıt edin ve hızlı ipuçları yaz

    AyarlarıView içinde verilen Sağlayıcı Ayar sekmesi ancak yalnızca erişilebilirdi URL'yi yazmak - bu liste ayarlarından eksikti destinasyonlar: ayarlar nav menüsü ve ayarlar iniş sayfası. Şimdi yol açıyor Her biri, sekme siparişini eşleştirmek, çünkü hangi sağlayıcı toplantılara karar veriyor Diğer ayarlar bile mevcuttur. Mevcut beş sekmedeki hızlı ipuçları hiçbir zaman yazılmamıştı - her dize yazılmıştı. Bir yer sahibi ("Yardım Heading", "Bullet Lobby Title"). Şimdi bir şey söylüyorlar, ve Teams için eklenen ayarları kaplayın: In-meeting control, passcode Politika, lobi atlamak ve mevcut roller, uzaktan kayıt çekme ve transkriptler, ve sağlayıcı davetleri. Her sekme aynı zamanda sağlayıcıların farklı olduğunu da açıklıyor, bu yüzden Engelli bir kontrol, sadece kırık bakmaktan ziyade belirtilen bir nedene sahiptir.

  7. · kamo-internal

    Enforce geo ve IP erişim kuralları Sayfa Yükler

    checkAccess kuralların kendisini değerlendirdi ve tüm hayatı için hiçbir şey bulamadı: Karşılaştırma kuralı türleri karşılaştırıldığında **************** yayıncılık yaparken Enum isimleri WHITELIST/BLACKLIST/TEMP BLOCK. Geo Node'nin sahip olduğu bir yorumdu GeoLite veritabanı yok. Her iki yarısı da gitti - şimdi karar Güvenlik Hizmeti okur Redis'deki önbellekler ve bu hizmeti bir özle ilgili sorarlar, bu yüzden bir uygulama var Politika ve hiçbir kopya buraya sürüklenmek için bıraktı. Adres, soldan ziyade X-Forwarded-Forwarded-For'un sağ en büyük umududur. Proxies append, so the left element is whatever the client sent, and reading it would would be the client sent. Hangi ülkenin ziyaretçinin tedavi edildiğine karar vermesine izin verin. bloke edici bir ziyaretçi şimdi ham JSON yerine basit bir 403 belge alır - bu bir noktaya ulaşır Tarayıcı üst düzey bir navigasyon yapıyor. Hiçbir kural ve ülke yok: okuyucu olamaz Bu konuda hareket edin ve sınırdaki biri bunun bir haritasını vermemelidir. Başarısızlar her yolda açılır. Redis'in kısaca ulaşılamaz olduğu bir proxy Tüm onant çevrimdışı.

  8. · APIService

    Ağ geçidinde onant erişim kuralları

    Bu filtre yazıldığından beri başarısız olmuştur. Organizasyonu okudum ya dag: domain:<host> Redis'ten hiçbir şey bu anahtarı yazdı ve null geri dönüş izin vermek için düştü; geo şube, Güvenlik Hizmetine bir yorumla boş olsaydı, bu da güvenlik hizmetine engellendi. Ya da değil. Her istek vefat etti. Şimdi karar GüvenlikHizmet önbelleklerini okur ve bu hizmeti kaçırıyor, bu yüzden Politika burada yeniden tanımlanması yerine bir yerde yaşıyor. Sıcak yol bir Redis Oku; Bir özleme, organizasyon başına kısa süreli HTTP çağrısı yapar ve 30'lara hitap eder. Müşteri adresi, X-Forwarded-For'un en doğru kamu umududur. Proxies append, bu yüzden Sol element saldırgandır - okumak bir başlık seçmesine izin verirdi Ülke istek gelen olarak değerlendirilir. Exempts liveness probes, CORS preflight ve karar uç noktasının kendisi ve asla Yargıç küme-internal adresler: hizmet-to-service trafiğinin ülke yoktur ve Takip etmek platformu aşağı götürecekti. Her yolda başarısız olursa, bağımlılık başına bir testle. Bu tüm onant önünde oturuyor API trafiği, bu yüzden Redis yavaş olduğunda bloklar toplam kesintidir. Ayrıca damlalar da **************** - şablon Başlangıçtan başlayarak, @SpringBootConfiguration olmayan bir pakette bul. Asla geçmedi; CI inşa ediyor -DskipTestleri bu kadar fark etmedi. Onu geri çevirme ‘mvn testi’ burada kullanılabilir.

  9. · SecurityService

    Aslında geo ve IP erişim kuralları uygulamak

    Kurallar depolandı, Redis'e önbellek ve asla danışmadı. AccessCheckController Erişildi Değerlendirmenin tek çağrısı ve AccessCheckController olarak adlandırılan hiçbir şey; APIService's Filtre, Redis anahtarından herhangi bir şey yazmadı ve izni olarak muamele etti. Bir geo blok oluşturmak hiçbir şey yapmadı. AccessDecisionService şimdi tek otoritedir. Giriş bunu doğrudan çağırır, ağ geçidi Filtre ve kamo-internal proxy check endpoint aracılığıyla aynı karara ulaşır, Ve politika bir zamanlar katman yerine bir kez var. Node kopyası çok uzağa sürüklendi Hiçbir şeyi eşleştirmek için yeterli: kural türleri "beyaz liste" / "temp-block" ile karşılaştırılırken Yayıncı WHITELIST/TEMP BLOCK yazıyor. GeoLite kararı Kızılis'de bir gün, olumlu ve olumsuz olarak önleniyor ve atlıyor Özel adresler tamamen. Adres bir başlıktan geliyor, bu yüzden negatif bir önbellek olmadan Bir caller dönen bogonlar her isteği 5.7M-row masasındaki taze bir araştırmaya dönüştürür - DoS şekli IpInRange tarafından bir kez kaçınılması için yeniden yazıldı. MüşterilerIpResolver, X-Forwarded-For'nin en çok açık umudunu okur. Sol element, istemcinin gönderdiği her şeydir: Proxy append, so "X-Forwarded-For: 8.8.8.8" artı Traefik'in kendi append, herkesin bloklarını seçmesine izin verecekti Buna karşı yargılandı. Her jeo kuralı, atmaktan bir başlık olurdu. Her zaman başarısız olursa, bağımlılık ve bağımlılık başına iddia edildi. Bir erişim kontrolü, Redis wobble kilitleri her bir platformdan daha kötü bir şekilde kapatamaz, ki bu daha kötü bir şeydir. Pencereden daha yakın olan olay. Beyaz listelenen bir adres de geo'yu atlar, bu yüzden bir yönetici Kim kendi ülkelerini bloklar bir şekilde geri tutar.

  10. · kamo-internal

    Zoom Market uygulaması için platform kayıt kartı

    Zoom'un tek tıkla bağlantı yolunu tamamlayın. Geri dönüş zaten çözüyor PlatformOAuthProviderType.ZOOM, ancak burada bir platform operatörü yoktu Market bilgilerini girmek için hiçbir yer yok, bu yüzden toplantı Ayarları Ekran her zaman kayıtsız olarak bir tıkış bildirdi. Tasarıma göre: per-org Server-to-Server yolu burada hiçbir şeye ihtiyaç duymaz ve Tavsiye edilen varsayılan olarak kalır, bu yüzden boş bir kart sadece bir tıkla gizli tutar. Teams toplantıları mevcut Microsoft 365 kaydı tekrarlıyor.

  11. · kamo-internal

    Microsoft Teams Telefon sağlayıcısı, arkaya

    Teams to **************** ve tüm yolu telleri ekleyin aracılığıyla: sağlayıcı seçimi, Entra + Azure İletişim Hizmetleri yapılandırıldı, onant admin onay, per-member bağlantı ve bir in-aktif yumuşakfon. Yumuşak telefon, her diğer sağlayıcıdan yapısal olarak farklılık gösteren kısımdır. Takımlar üçüncü taraflara SIP kayıtlarını açığa çıkarır, bu yüzden bir Takım hattı olamaz SIP.js veya RingCentral's WebPhone ile kayıtlı. Desteklenen rota Azure İletişim Hizmetlerinin özel Teams endpoint: Geri dönüş değişimleri Üye Bir ACS token için entra token ve TeamsAcsPhoneSdk bunu bir ACS token döndürür Aynı TelefonSdk arayüzünün arkasındaki ajan SIP adaptörleri uygular, bu yüzden Softphone ve her UI bileşeni sağlayıcı-agnostic kalır. SipCredentials kazançlar Seçmeli acs* alanları; sipInfo sadece Teams için boş. ACS paketi yalnızca tarayıcıdır ve dinamik olarak başlangıç içinde ithal edilir(), çünkü bir Statik ithalat sunucuyu kıracaktı. UI'de iki takım özel gerçek, başarısız olmak yerine UI'de yüzeye çıktı runtime: in-rose call is recommended ( leave ACS blank and the org still get Varlık ve çağrı tarihi, yanlıştan ziyade gizli aramalarla, ve Sesmail varsayılan olarak kapalıdır, çünkü Teams'in sesmail API'si yoktur - mesajlar arazi Her üyenin Exchange posta kutusunda, bu yüzden onları okumak bir malzeme daha geniştir Bir yöneticinin kasıtlı olarak tercih etmesi gerektiğini onaylayın. Üye telefondaki karta bağlanır, ancak sağlayıcıya dikkat edin RingCentral-sadece. Her iki sağlayıcının bir per-member iznine ihtiyacı vardır, çünkü Farklı nedenlerle: RingCentral çünkü yumuşak bir telefon sadece kayıt olabilir bağlı hesabın kendi uzatması, Teams çünkü varlık yazar ve arama token değişim sadece delegeleniyor. Marka: karo Microsoft kurumsal işareti ve düz ürün adı kullanır. Microsoft, Teams'i bir bütünleme tanımlamaya izin verir, ancak Teams'leri kısıtlar Logolar ve sertifikalı Teams partnerlerine markalaşma, bu yüzden Teams 7-8 gönderilmez. Doğrulanmış: npm testi - 40 dosya, 394 test, 0 başarısızlık; tsc -noEmit temiz; i18n anahtar muhafız ve müşteri-navigasyon her ikisi de geçer. Dictionary stringleri indi İlk önce kamo-translation-dictionary 0801a17.

  12. · VOIPService

    Microsoft Teams Phone bir sağlayıcı olarak

    Takımlar bir API değil, bu yüzden sağlayıcı birlikte üç kontrol uçağı yapıştırır: • Graph, app-only – tarih (getPstnCalls) Takımlar cihazı envanteri. Kayıt kayıtları başvuru için Tasarım; Microsoft açıkça delegeli bir forma sahip olmadığını belirtiyor. • Graph, delege - varlık yazar (Örnek. ReadYaz sadece bir tane olarak var Delege, kendi kendine sadece izin) ve sesmail, hangi üyenin hayatlarında yaşıyor Exchange mailbox çünkü Teams'in hiç ses posta kaynağı yok. • Azure İletişim Hizmetleri - üyenin kendi kendine ait yumuşakfon Takımlar Telefon hattı, özel Teams endpoint token değişimi aracılığıyla. İşte bu, Sadece desteklenen rota: Takımlar SIP kayıtlarını üçüncü taraflara ve Graph API'si, kullanıcı olarak yerine bir bot olarak katılır. Yetenekler bir örnek aslında ne için yapılandırılmıştır Sert kodlanmış yerine, ACS olmadan bir veyag sesCalls=false ve UI Aramaları 501 orta arama yerine gizler. Deliberately yok, Çünkü Microsoft API herhangi bir versiyonda mevcut değildir: Bir Takım numarasından SMS, çağrı kuyruklar, ileri çağır, oto-answer ve başlangıç / çıkış kaydı. Bunlar 501'i yükselten arayüz varsayılanlarında kalır. Credentials ilk önce per-instance ile ilgilidir (an veyag kendi Entra uygulamasını kaydeder – Ortak işletme şekli ve Kamo'nun platformuna ihtiyacı yok) ve OAuth kaydında bir MICROSOFT TEAMS sırasına geri dönün. Onboarding iki umuduyla çalışır, çünkü onant daha önce keşfedildi pinned: Bir yönetici işaretleri, id token'in “tid” gerçek onant verir, sonra Bu onant'ın /v2.0 /adminconsent'e gönderilirler. Consent tarafından onaylanmıştır Bir uygulama token ve Graph arama - Microsoft admin consent = Gerçek Gerçek Gerçek Gerçek Gerçek Başarısızlıkta bile ve “tanışlı” yönlendirme parametresinin uygulanabilir olduğunu uyarır, bu yüzden Ne güvenilirdir. Her iki takım da akışlar ve per-member delege Birden fazlax on /api/voip/oauth/callback, bir yol zaten halka açık Ağ geçidi, bu yüzden APIService yeni bir rotaya ihtiyaç duymaz. Değişim bildirimleri, aynı nedenden ötürü mevcut /api/voip/webhook'u sürüyor. Graph's handhake, RingCentral'inkinden farklı - bir ?validation Hediye sorgu parametre metin / açık olarak yankılandı - ve başka bir şeyden önce cevaplanır, çünkü Graph, uç noktası yavaşsa on dakika boyunca bildirimleri azaltır. Abonelik Aboneliği Amaç üzerinde filtrelenmemiş oluşturulur: abonelik filtresi hala hedefler 2026 Haziran'da geri dönen "participants" koleksiyonu. İki pre-existing kusurları düzeltildi, çünkü Teams onları yük taşıma yapar: • CallController, Cap tasksController ve CallWorksController çözüldü Sağlayıcı forOrganizasyon yoluyla - veyag'in en eski aktif örneği ANY türü. Bu sadece tek bir provider veyag için doğru. Takımlar genellikle olacaktır İkinci bir sağlayıcı olmak, bu yüzden her üyenin tarihi, sesmail ve ajan devleti İlk olarak bu kadar sağlayıcı tarafından servis edilirdi. Şimdi kullanırlar Bir üyeye dikkat edinMember, SipController'in ne yaptığını aynalayın. • Bir örnek sol üye voip oauth token sıralarını geride bırakmak, çünkü geride kaldı. FK'dan cascade'ye kadar ve "bağlantı" raporlamaya devam ettiler. Doğrulandı: mvn testi - 133 test, 0 başarısızlık (49 yeni).

  13. · kamo-internal

    Sağlayıcı Ayarlama sekmesi ve kabiliyetli toplantı ayarları

    Sağlayıcı Ayarlama sekmesini / sıralamalara / features/meets'e ekleyin ve her şeyi diğerini yapar. Sağlayıcı hakkında dürüst bir şekilde yapılandırılır. Artık tanışmadı.<domain>/<room> tarayıcıda - bu tarayıcıda ne oldu - bu ne oldu Bir Kamo yapılandırmadan bağımsız olarak her toplantı yaptı. Şimdi Toplantıyı arkadan oluşturur ve URL'leri sağlayıcı geri döndürür, Bu yüzden Interaction Center, sohbet aracı penceresi ve üye tüm dizileri Kendi değişimleri olmadan soyutlama yoluyla yol: paylaşıyorlar MeetingDialog, bu kancayı paylaşan. - Sağlayıcı Kurulum: bir ayarlı bar ile tedarikçi kartları, bu yüzden maliyet maliyeti geçiş daha sonra keşfedilenden daha önce görünür gri kontrollerin sekme. Credential formlar sadece yazılır - sunucu Hangi alanların ayarlandığı, değerleri asla - artı canlı bir bağlantı testi testi ve per-provider kurulum talimatları. - Capability gating: useMeetProvider, sağlayıcının desteklenen ayarlarını okur ve MeetSettingRow geri kalanını bir araçtipi sağlayıcıyı isimlendirerek devre dışı bırakır. Desteksiz ayarlar gizliden ziyade gösterilir ve gerçekten devre dışı bırakılır Sadece dimmed, bu yüzden klavye tarafından değiştirilemezler. Onları tamamen kurtarın. Gating açılmaz - başarısız bir yetenek görünümü her şeyi gösterir, çünkü griing Bir çalışma ekranı, arka uçun göz ardı edileceği bir kontrol göstermekten daha kötüdür. - Diğer sağlayıcıların desteği: oyundan önce, sohbete katılmak, Ekran payı, arama-in, gerçekleştirilmiş-kullanıcılar-yalnızca, kod uzunluğu ve gömülme, lobi, kapsamı, şimdiki ve katılımcı kontrolleri, bulut kaydı, Transkriptler, indirme ve sağlayıcı davetleri. - /meet/join/<ref> şu anda sağlayıcı-aware: Kamo Meets hala tek zamanlı bir anahtar alır Zamana tıkladığınızda, Zoom ve Teams sağlayıcının kendi URL'sine yönlendirilir. Bu Bir toplantı id veya oda adı kabul et, bu değişiklikten önce gönderilen davetler Çalışmaya devam edin. - E-posta daveti bağlantı, UUID-validated bir toplantıdan daha ziyade inşa edilmiştir Bir oda adı, mevcut kuralı bir müşteri destekli URL'nin asla asla olmadığı Bir veya markalı e-postaya güven.

  14. · kamo-shared-library

    MICROSOFT TEAMS sağlayıcı tipi

    Appends MICROSOFT TEAMS to VoipProviderType. Enum ORDINAL olarak devam ediyor ************ Bu yüzden pozisyon yük devretiyor ve Sürekli devam eder; Javadoc şimdi bir sonrakiden ayrılmayı tercih ediyor Kişi bunu teşvik eder. No DDL değişimi - ORDINAL sütunu değeri yok Beyaz liste, bu yüzden KamoInitializer yok. ÜyeVoipOAuthTokenRepository ile ilgili iki soru ekleyin: •ProviderAndInstanceId tarafından bulun - erişimli bir sağlayıcı kimliği haritalar (a Microsoft Entra object id on a Teams call record) back to a Kamo member. • InstanceId tarafından silin - bu satırlar örneğin FK'ya sahip değil, bu yüzden bir delet Sağlayıcı onları hala "bağlan" raporlamanın ardında bıraktı.

  15. · APIService

    Toplantı sağlayıcısı OAuth callback

    Zoom ve Microsoft, tarayıcıyı bir org yazarından sonra bu ağ geçidine yönlendirdi Kamo'nun uygulaması. Buradaki popup toprakları onant oturumu ile – org seyahatleri ?state – so the callback needs the sessionless, auth-stripping passthrough the e-posta sağlayıcısı zaten kullanır, sıradan /api/meet /** ileri değil.

  16. · MediaService

    Toplantı sağlayıcısı Zoom ve Microsoft Teams ile soyutlama

    Toplantılar Kamo inşaatla tanışın - MeetService bir Meet odası devam etti Adı ve başka bir şey. Bu soyutlama ve iki uzaktan sağlayıcı tanıtıyor Bunun arkasında. e-posta sağlayıcı katmanı ile tanışın: ToplantıProviderResolver bir araya getiriyor Bir MeetingContext (decrypted information, yenilenen OAuth hibesi veyag politikası, the the the the sağlayıcının ev sahibi hesabı) ve bir yetenek haritası, bu yüzden callers sormak Sağlayıcı türüne dalmayı tercih edin. Bir dördüncü ekleme Sağlayıcı bir bean eklemek anlamına gelir, düzenleme arama siteleri değil. - KamoMeetProvider: oda adı ve URL inşaatı, sunucu tarafında taşındı. The The The The The The The The Ya dag-namespacing that stop two tenants shared a Prosody conference used to to Tarayıcıda yaşamak; şimdi testlerle doludur. ZoomProvider: REST v2, Server-to-Server OAuth veya Market uygulaması. Creates Organizasyon üyesi adına, bulut kayıtlarını ve transkriptlerini çeker. MicrosoftTeamsProvider: Graph onlineMeetings, app-only veya delege. Onunla onun Bağlantı testleri oluşturma, çünkü uygulama erişim politikası Teams ayrıca bir yöneticinin özlediği her zamanki şeydir - tek başına izin İyi ve sonra her toplantıda 403. Toplantı Toplantısı Özellik, admin UI ile sözleşmedir: her sağlayıcı, her sağlayıcının ilan ettiği ayarları onurlandırabilir ve ayarlar geri kalanını devre dışı bırakabilir. Talepler Güvenilirlikten ziyade testlerde bulundu, çünkü aşırı talep eden bir sağlayıcı üretir Sessizce hiçbir şey yapmamak – bu tabakanın önlenmesi için var. SağlayıcıRecordingSweep, Kamo'nun kendi depolamasına uzaktan kayıtları çeker, böylece Oturma, kota ve post-meeting summaries her sağlayıcı üzerinde aynı şekilde çalışır. Downloads are capped: Bu hizmet ayrıca 1Gi altında sohbet ve toplantılara hizmet ediyor Limit, bu yüzden aşırı büyüklükte bir kayıt risk almaktan ziyade bir uyarı ile atılır pod. Credentials mevcut platform anahtarı ile şifrelenir, bu yüzden yeni bir sır yok Ölmüş olmak. Toplantı uç noktaları tarafından paylaşılan oturum işleme, hareket eder MeetSessionResolver – kasıtlı olarak haklarını kontrol etmeden.

  17. · InitializerService

    Schema for the multi-provider meeting katmanı

    Creates Creates **************** ve org meeting oauth tokens, ekliyor Sağlayıcı-identity sütunları MEET RECORDS ve MEET RECORDINGS ve SM/Teams-ible settings to ORG MEET CONFIG, and backfills every existing existing settings to ORG MEET CONFIG Açık bir KAMO MEET sıraya organizasyon. Bu yönetilen iki şey bize öğretti, ikisi de burada kodlandı. Hibernate's ddl-auto builds Herhangi bir KomutLineRunner'dan önce oturumun zirvesi, bu yüzden CREATE TABLE ifadeleri Normalde hayır-op ve sütunlar varsayılanlarla gelmiyor - geri yükleme bu nedenle Onlara güvenmek yerine boş ve zamanlayıcılar tedarik eder, bu yüzden İlk versiyonu sessizce hiçbir şey eklemedi. Ve eşsizlik ilan etti Varlıklar Hibernate kendi kısıtlamalarını korur, bu yüzden adı indeksler bir an indeksler Daha önceki revizyon tekrar edildi; onlar burada düştüler. com.kamo.z.shared.meet to the open @EnableJpaRepositories list, without without without without without without without without without without without without the open @EnableJpaRepositories list, without without without without without without without without without without without without without without without without without without without without without without without without without Yeni repositorların herhangi bir koşucu yangınlarından önce fasulye ve KI abortları yok.

  18. · kamo-shared-library

    Sağlayıcı-agnostic

    Kamo Meets tek olası geri dönüş oldu: OrgMeetConfig düz bir Meets ayarlar çanta ve bir toplantıRecord hiçbir şey yapmadı ama bir oda adı. Bu, ekler Bunun yerine Zoom veya Microsoft Teams üzerinde bir organizasyon yürütmek için şema. - tanışın.provider: MeetingProviderType / MeetingProviderStatus, per-org OrgMeetingProviderEntity (encrypted credential blob, last-verified state) and OrgMeetingOAuthTokenEntity, zaten zaten zaten e-provider paketi aynalamak e-posta sağlayıcısı soyutlama geri dönüyor. - ToplantıRecord, hosting sağlayıcının kendi kimliğini kazanır - uzaktan toplantı id, Katıl ve ev sahibi URL'ler, geçiş kodu, ev sahibi hesabı - bu yüzden bir toplantı yeniden katılabilir ve Kim ona ev sahipliği yaptı. - ToplantıRecording kazançlar sağlayıcıRecordingId, bu uzak bir uzaktan çekilme tutar sağlayıcının bulut kaydı idempotent. - OrgMeetConfig, ayarlar Zoom ve Teams'in bir Meet-sadece bir toplantının desteklediğini destekliyor Yapın taşımanın bir nedeni yoktu: katılmadan önce, geçiş kodu şekillendirme, lobi oluşturma Kapsam, mevcut ve kontrolleri, bulut kayıtları, transkriptleri, sağlayıcıların davetleri ve geri kalan ev sahipliği toplantıları aşağıda oluşturulur Bir üyenin sağlayıcı üzerinde hesabı olmadığı zaman. Hiçbir sağlayıcı satırı ile her org, KAMO MEET'e karar verir, bu nedenle bu bire kadar inert admin başka türlü seçer. Köşeler KamoInitializer tarafından üretime uygulandı Bundan önce indi. PlatformOAuthProviderType, ZOOM(9) için Zoom Market uygulaması için kazanır; Teams toplantıları tekrar MICROSOFT (3). Koruma testi onunla hareket eder, çünkü bir enum ve Test devam eden boş boşları ayrı bir şekilde topraklayamaz.

  19. · kamo-internal

    Geo-blocking kart üzerindeki izin liste ülkeleri

    Kart sadece ülkeleri inkar edebilir, bu yüzden bir ülkeye hizmet eden bir org Her biri. Şimdi her iki liste vardır: seçilmiş ülkeyi listeleyen bir mod toggle picks which list the selected country Topraklar ve iki masa yan yana oturuyor. Boş bir izin listesi, her şeyin engellenmemesine izin verir; her ülkeyi inkar etmeyen bir kişi her ülkeyi reddeder. Bundan uzak değil. Bu geri dönüş, kart üzerinde çıkmak yerine geçmek için yeterli. keşfedildi, böylece masaların üzerindeki fark, hangi rejimin yürürlükte olduğunu söylüyor. Benzersiz (org, ülke) kısıtlama tam bir liste üzerinde bir ülke tutar, bu da bunu yapacak Bunu diğerine geri getirmek başarısız olur, bu yüzden her satır onu PUT aracılığıyla çeviren bir hareket eylemi taşır. Bunun yerine.

  20. · SecurityService

    Geo bloklarla birlikte listelenen ülkeler

    Jeoloji bölümü sadece inkar etti: Bir ülke bloke edildi ya da yoktu. Veya Bir ülkeye hizmet etmek isteyen her bir ülkeyi en aza indirmek zorundaydı, ki bu güvenilmez. Ve sessizce yeni bir ülke kodu ortaya çıkıyor. org geo block rules.is blocked zaten var ve zor kodlanmış bir gerçekdi, bu yüzden bir izin Kural o sütun sahte ayarlanmıştır - hiçbir şema değişmez. Değerlendirme: Açık bir blok kazanır, O zaman bir izin listesi her şeyin bundan yoksun olduğunu ve boş bir izin listesi izin verir Her şey engellenmedi. Bu, tam olarak daha önce olduğu gibi mevcut blok-sadece veyags hareket ediyor. GeoRules şimdi kuralın her iki tarafını da yayınlar, çünkü kurallar yük taşımaya izin verilir. Bir kez var. Bu değişiklik yapmadan önce yazılan ön ödeme yükleri, kapalı alan ve Bir dağıtmada önbellek TTL hayatta kalır, bu yüzden eksik bir alan bloke edilir. Ayrıca kapsama alanları çağrıcının veyag'e bağlanır ve silinir. Daha önce bir kural çözüldü UUID tarafından yalnız, bu yüzden başka bir kiracıdan bir idda edildi.

  21. · kamo-shared-library

    Düzenlemeler ve kılavuz sürüm versiyonları hakkında kaliteyi okuyun

    Bir toplanan fiyat, ayarlanan ayarlamaların içine yığılmasının temel bir cep PLUS olmasıdır, bu yüzden yargılama Sadece hücre yargıçları sayının yarısı: bir yanlış okuma ile 99.875 temiz bir şekilde hazır -1.250 En üstteki LLPA hala yanlış bir fiyat. MlosPriceAdjustment şimdi okuma kalitesini taşıyor Bu bir ayarlamadan, bu yüzden işaret kapısı en zayıf bağlantıyı alabilir Tüm montaj. MlosGuidelineVersion aynı alanı hız tablo omurga ile tutarlılık için alır - Zaten kaynakDocumentId taşıdı, bu yüzden bu onun kanıtlanmışlığını tamamladı. Her iki nullable; null iyi yerine NO SAL anlamına gelir. Köşeler prod KamoInitializer aracılığıyla CockroachDB.

  22. · kamo-internal

    Açık bağlantılar bu uygulamayı sekmede üye zaten içeride

    Okuma pane'de Mail her bağlantıyı yeni bir sekmede açar, bu doğru Bütün internet ve bizim için yanlış. Bildirim e-postalarımız neredeyse tamamen bağlantılar Uygulamaya geri dönün ve buları taze bir sekmeye gönderiyorlar seansı seansa Üye zaten sahip ve onları bu sekmeye ulaşmak için soğuk bir boot aracılığıyla oturtuyor Hemen verebilirdi. Aynı köken tüm testtir - e-postayı açıklayan sayfa ile eşdeğer, e-postayı değil "Bir Kamo domain gibi görünüyor" ve org's domain üzerinde bir ek maç değil. İşte bu Tam olarak URL'lerin seti mevcut seans için geçerlidir, bu da tüm bunlar Bu sekmede kalmak için neden ve posta yoluyla kullanılamaz: başka bir kiracının ev sahibi, Bir lookalike veya kullanıcıinfo ev sahibinin diğer tüm farklı kökenleri ve farklı kökenleri işaret ediyor Başka bir yabancının bağlantısı gibi yeni bir sekmeye gidin. Konum atamaktan ziyade Routing: tam bir belge, Reaktörden gözyaşları indir Ağaç ve herhangi bir öngörülemeyen taslakla birlikte her açık araç penceresini yok eder, bu yüzden neden Bu repo'nun iç navigasyona karşı sert bir kapı var. Değiştirilmiş ve orta tıklamalar yalnız bırakılır - bu jest, kullanıcının kasıtlı olarak yeni bir sekme istemesidir. Ebeveynlerden dinlemek işe yarıyor çünkü sandbox zaten izin tutar-same-origin İzin vermeleri sırasında yükseklik ölçümü için, bu yüzden e-postadan hiçbir şey Her zaman çalışır; eller bizimdir, dışarıdan eklenir. Bir tuzak kaydetmeye değer, kendi testi tarafından yakalandı: URL'den ziyade bir yol döndürür Gerekli ama yeterli değil. "https://host//evil.test" gerçekten aynı-origin. Ve onun yol adı "//evil.test" - hangi yönlendirici protokol-relatif olarak okur ve Out-siteyi takip edin. Bir köken kontrolü geçen bir e-postalı açık yönlendirme. Böyle bir bağlantı Artık tarayıcının gerçek, zararsız URL’yi çözdüğü yeni bir sekmeye girer, E-postanın bir yere sessizce yeniden yazılması yerine.

  23. · kamo-shared-library

    Per-cell Ekstraksiyon güven + uygunluk-matrix kanıtlanmış

    Güven modelinde iki boşluk hem para yolunda. PER-CELL. Bir sayfa çapında zemin, tek bir fiyat yargılamak için yanlış bir tahıldır: tek bir tek fiyat: tek bir tek tek tek bir tane Kötü hazır kupon tüm sayfayı aşağıya sürükler ve her OTHER fiyatını ona gönderirdi Bir insan için, yüksek bir sayfa zemini belirli hücre hakkında bir ödünç veren hiçbir şey söylemiyorken Aslında alıntılandı. **************** Ne kadar iyi kayıt kayıtları Bu oran / fiyat / satır okudum, bu yüzden yanlış bir kupon maliyeti sadece kendi fiyatıdır. ELIGIBILITY PROVENANCE. MlosEligability Matrix bir kaynak belgesine bir yol yoktu Hepsi - tek yolu bir NULLABLE rehberiVersionId idi, bu yüzden bir terfi matrixi terfi edebilirdi Gelen sayfaya izlenmedi. Eligability, bir kredinin kredi olup olmadığına karar verir Bu, tam olarak bir inkarın açıklanması gereken yeri yapar; kanıtlanmış bir Boşluk, bir borç verenin söylediği noktada bir boşluk vardır. Şimdi taşıyor KaynakDocumentId ve aynı ekstraksiyon güven sözleşmesi hız tablo omurgası olarak. Hem çıplak hem de null iyi değil, NO SAL anlamına gelir. Köşeler KamoInitializer aracılığıyla alevlendi.

  24. · kamo-signer-monorepo

    Ajanın telefonunu göster, müşterinin kopyasında ücretsiz ve e-posta

  25. · kamo-internal

    Ajanın telefonunu göster, önizlemede özgür ve e-posta

    Her biri kendi çizgisinde: iki numaradan bir run-on ve bir adres bir dize olarak okur ve Yanlış bir şekilde çevirin.

  26. · SecurityService

    Ajanın yayınlanan temas detaylarını yeniden çözün

    E-posta, TeamMember.emailWork yerine üyenin birincil posta kutusundan geliyor - bu sütun ücretsiz metin posta kutusu düzenleme ve rutin olarak kabul edilemez Aslında gönderdikleri adres. Posta kutusu birincil olduğunda geri çekilme kalır. Bir uzatma ile bir VOIP özellikli üye, org'un kendi hattı artı olarak yayınlanmaktadır. uzatma, toll-free numarasını veyag'in bir tane olduğu zaman da sunmak. Bir uzatma olmadan, İş telefonları - bunu tutan tek sayı, yayınlanmak anlamına geliyor. Bir engelli VOIP yapılandırma hiçbir şey yayınlar, çünkü bu uzatma cevap vermez. Her görünüm savunmadır: bir müşteri odaklı belge verme başarısız çünkü posta kutusu satır eksik, iletişim kurmanın daha az bir yolunu yazdırmaktan daha kötü olurdu.

  27. · kamo-shared-library

    Ajana ulaşmak için her yol, sadece bir isim değil

    Adı ve unvanı sadece alıntıya sahip olan bir müşteri söyler, ancak bunu nasıl sormaz. Blok şimdi e-posta ve telefon taşır, çağrıcı tarafından çözülür - birincil posta kutusu e-posta sağlayıcı şemasında ve VOIP yapılandırmasında genişleme, ne de Bir statik yardımcıdan ulaşılabilir. Main line and toll-free are separate fields so the document can print both: choose Bunlar arasında, çağrının müşterinin maliyetinin ne olduğunu seçiyor. SubWithExction çiftleri org hattıyla bir uzatmayı asır ve çıplak dönerse geri döner. Ya yarısı eksik. Bir yetim "ext. 204", herkesin çağırabileceği bir sayı değildir ve çıplak org line, müşteriyi temsilcinin olduğu gibi geçiş odasına yanlış yönlendirecektir.

  28. · kamo-shared-library

    Katalog omurga + otomatik işaret-off temeline güven

    Bir fiyat sadece, toplandığı sayfa kadar güvenilir ve hiçbir şey değil. Fiyat yolu bu sinyali taşıdı: güven önceden açıklığa kavuştu Doğru satırlar (MlosExtractedCandidate) hiçbir üretim kodu okumadı. **************** The WEAKEST per-field güven Onaylanan adaylar arasında sürüme terfi - minimum, asla demek değildir. 200 temiz hücre ve bir 0.20 yanlış ortalamaları 0.996'ya yazdırır ve açık olacaktır Herhangi bir eşi, o bir hücre bir kredi yanlıştır. Null hiçbir şey anlamaz SAL (başlangıçtan önce yazar veya terfi ettirilmeli) ve tüketiciler olmalıdır Auto-approve'yi reddetme; iyi okuma, gereksiz bir fiyat nasıl Yayınlanmamış çıkıyor. WORM- diğer fiyatlanabilir sütunlar gibi korunması - anlık @PostLoad ve @PreUpdate'de diffed, ya da sessiz bir delik olurdu Denetim zinciri. MlosPricingSignoff otomatik / güven / eşi applied kazandı. olmadan olmadan Onlar bir makine onayı, bir üye dışında bir insan tarafından ayırt edilebilirdir Para yolunda olan, bir denetim hatasıdır. Eşlik, yanında depolanır Değer çünkü yapılandırma hareket eder: 'güven 0.72 daha sonra yargılanamaz O gün barın 0.70 veya 0.90 olup olmadığını bilmeden. Köşeler KamoInitializer aracılığıyla alevlendi.

  29. · kamo-internal

    Alıntılar sekmesi - hesabın karşısındaki her alıntı

    Bir sunucu sayfalı DataGrid'in yanı sıra, numara ve unvanı, statüsü, toplam menzil ve yaratılan aralık. Filtreler tek bir sorgulamaya ve tek bir sorgulamaya girer, bu yüzden bir aralık ayarlayın Tipleme, tarla başına bir anahtarstroke yerine bir tur-trip'dir. Herhangi bir filtre değişikliği Sayfa 1'e sıfırlama - 6. sayfada kalın bir sonuç seti boş bir ızgara olarak okur. Expiry, statüden ayrı gösteriliyor: Bir SENT alıntı geçerliliğini geçmiş olabilir ve hala SENT olarak okuyun, bu yüzden bu satırlar sessiz kalmak yerine kendi işaretlerini taşır Yanlış. Rows and the lead column both Route into that lead's quotation.

  30. · SecurityService

    GET /quotes/account/{uid} - sayfalanmış, filtrelenmiş

    Tarihler ISO dizeleri ve parse lenily olarak gelir: Müşteri kötü bir filtre gönderir 400'den fazla bütün ızgara yerine hiçbir şey daraltın. A date-only "to" sınırları tüm kapsar O gün, aksi halde bugün filtreleme gece yarısından bu yana hiçbir şey yükseltmez.

Evreniniz sizi bekliyor.

Birkaç dakika içinde ücretsiz olarak başlatın. Hazır olduğunuzda ürünleri ekleyin - göç yok, yeni girişler yok.

Sonsuza kadar ücretsiz — kredi kartı gerekmiyor