Перейти до вмісту
KAMOUniverse

Журнал змін

Что нового.

Все усовершенствования платформы, как только она будет запущена.

  1. · kamo-marketing

    Add Flowroute to integrations hub page

  2. · kamo-marketing

    Add Flowroute to INTEGRATED WITH banner

  3. · kamo-internal

    Show accurate provider connection status from isConnected field

    Replaces the old logic that showed "Connected" for any provider with no sync error (including brand-new providers that were never tested). New three-state badge driven by isConnected (null/true/false): - null / never tested → grey "Not tested" (HelpOutlineIcon) - false → red "Not connected" (ErrorOutlineIcon) - true + sync error → amber "Sync error" (WarningAmberIcon) - true → green "Connected" (CheckCircleIcon) - RingCentral no OAuth → amber "Needs reauth" (unchanged)

  4. · VOIPService

    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 have changed, requiring a re-test before showing Connected) - toDto() exposes isConnected so the frontend can distinguish: never tested / connected / not connected

  5. · kamo-shared-library

    Add isConnected field to VoipProviderInstance

    Nullable Boolean: null = never tested, true = last test passed, false = failed. Requires KamoInitializerService schema migration to add IS_CONNECTED column.

  6. · kamo-marketing

    Показати активні пропозиції банера з живим мілісекундним відліком

    Підсумок активного сервера просування на головній сторінці та надає ГеройОферБаннер між підголовою та безкоштовною виплатою. У банері відображається сума знижок, тривалість та відлік в режимі реального часу ****** в 50ms) з анімованими градієнтно-жовтий кордон і шіммерний ковпачок. Рендери нічого, коли немає активних або недосвідчена акція існує.

  7. · kamo-internal

    Дріт Доступний / недоступний перемикач для резервного копіювання та виправлення помилок присутності OFFLINE

    - Перейменування Paused/Active Chip на Доступний/UnЗагружено гостем - Видача початкової доступності на кріпленні та стійких носіях через новий API для обміну повідомленнями - Додати isAvailable поле до інтерфейсу Учасника та пропа - Член Список переходить від відповіді на департамент - УчасникItem показує он-лайн/OFFLINE/UNAVAILABLE Label з помаранчевим кольором для 0 - Виправлення помилок OFFLINE: додати видимістьзмінити серцебиття і 120-х періодичних сипучих re-fetch

  8. · SecurityService

    Додати до облікових записів, пов’язаних із відповідденням та обліковими записами

  9. · InitializerService

    Заповнювач - 0,05 = TRUE для існуючих членів

  10. · kamo-shared-library

    Додати до обраного поля для доступу до користувачів

  11. · kamo-internal

    Видалити доступ та домени та компонент доменуManager

  12. · kamo-marketing

    Live Переглянути значок + відмова від нового повідомлення агента

    - Тримає LiveSupportPanel змонтовано під час мінімізації віджету (тільки коли існує підтримка) тому підписка STOMP залишається alive і onUnreadMessage вогонь для вхідних повідомлень агента навіть коли Відвідувач не шукає чату. - Анімує значок з пружинною шкалою на кожній зміні кількості (під ключ) re-mounts елемента) плюс безперервний Tailwind кільце під час > 0 р. - Вимкніть і нахиліть до мінімуму вкладку, коли кількість йде вгору, і перефарбуйте її червоним кольором, щоб він захопив увагу по всій сторінці. - ручкаЕкспон вже очищає кількість на відкритому повітрі, тому не потрібно змін там.

  13. · MediaService

    Публікація індексу + прочитати агента та відправник відвідувача

    - ******** тепер делегати ****** так кількість відображає сеанси з непрочитаними повідомленнями відвідувачів та розпадами при агент викликів markAsRead. - Новий публіка ****** Helper. - ******** тепер (a) re-broadcasts агента задній програш після останньогоПереглянуто заздалегідь і (b) виклики Helper so the navtop SupportButton stays in sync без очікування наступне опитування 60-х. - ******** також називає помічник так navtop bumps жити коли відвідувач надсилає. Кількість навтопу тепер відповідає за зростанням стану значка одночасно після натискання та після оновлення браузера.

  14. · kamo-shared-library

    Непрочитане число + шукачий

    Adds************************************************************************************************************************************************************************************************************************************************************** Підтримувані значки можна підрахувати квитки підтримки, які дійсно потрібні увагу (прочитані повідомлення відвідувачів) замість просто PRE TICKET/NEW статус. Кількість читає прямо з DB, так що вона витримує оновлення. Також додає************************************************************************************************************************************************************************************************************************************************************* може вирішити власник org з сеансу GUID після маркуванняAsRead.

  15. · KlusterServices

    Додавання медіа до списку сертифікатів субдомену

  16. · kamo-internal

    Додавання медіа субдомену до необхідних псевдонімів DNS

  17. · kamo-internal

    Додавання стовпчика Місцезнаходження до даних про квиток

    Читачі ****************************************************************************************************************************************************************************************************************************************************************************** вимкніть supportTicketDTO (нині зніміть на суб'єкті квитка) час створення — додаткова поїздка. Рендерс прапор + місто/region/country з ІП показаний в інструментальному режимі; повертається до емітента при відсутності геоданих квиток на літак. Розгляд тільки агента. КвитокГедер вже споживає однакові поля ДТО, тому інструмент для пікап Вікно тепер показує знімок занадто — немає GeoLite або відвідувача-таблика читати на рендері.

  18. · kamo-shared-library

    EnglishDeutschPусский简体中文中國傳統EspañolالعربيةFrançaisελληνικάDanskАнглійскаябългарски

    Додаток VISITOR IP ADDRESS, VISITOR COUNTRY CODE, VISITOR COUNTRY NAME, VISITOR CITY, VISITOR SUBDIVISION колонки. Захоплений створенням квитків Отже, список / кінцеві точки, ніколи не повинні робити сканування діапазону GeoLite або окремий перегляд відвідувачів на час читання. KamoInitializerService (hibernate.ddl-auto: оновлення) додасть стовпчики при наступному пробігу; існуючі рядки виходять назад до запису відвідувачів збережена країнакод в toDTO.

  19. · MediaService

    Додати /ws/public-chat-native plain WebSocket endpoint з SockJS

    Реєструє другу кінцеву точку STOMP без SockJS на /ws/public-chat-native так що фронтенд може підключитися з рідним WebSocket (brokerURL) без необхідності Русский EnglishРусскийУкраїнськаPolskiItalianoEspañol汉语Bahasa Indonesiaहिन्दीPortuguês日本語DeutschFrançaisภาษาไทยελληνικά اللغة العربية Дозвіл сайту-Політика. Початкова /ws / public-chat SockJS кінцева точка зберігається для зворотної сумісності.

  20. · kamo-internal

    Пертикет Переглянути значок + "Нові повідомлення тільки" фільтр

    - Список квитків показує чат-бублевий значок з непрочитаним підрахунком поруч з квиток #, коли сеанс має повідомлення, що виникли, ніж агента останнє повідомлення. - Додайте "Нові повідомлення тільки" фільтровий вимикач до фільтра. ******** на початковому навантаження і коли надходить вхідне повідомлення, тому значок очищає як агент читає розмову. Відповіді на камо-шаредно-лібертові зміни, які розширюються FindChatMembershipsByMemberId, щоб включити сеанси підтримки, плюс The MediaService трансляція в ****************

  21. · MediaService

    Радіоканал Переглянути кількість агента на повідомлення відвідувачів

    Після того, як відвідувач надіштовхує повідомлення про підтримку, відштовхуючи останні непрочитані рахунки payload to************************************************************************************************************************************************************************************************************************************************************* оновлення мітки та навтопу в режимі реального часу. Дзеркальна трансляція в MediaController.sendMessage для чатів-учасників.

  22. · kamo-shared-library

    Включає в себе support TICKET сеанси в непрочитаному запиту членства

    знайтиChatMembershipsByMemberId тепер повертає членства в ЧАТ і Підтримка TICKET типи сеансів, тому існуючий за п'ятий рахунок інфраструктура (getUnreadCountsByMember, /topic/chat/unread/{memberId} трансляція, GET **************** автоматично покриває підтримка квитків. Давайте агенти дивляться на нові індикатори в списку квитка і суміщений загальний непрочитаний значок в навтопі.

  23. · KlusterServices

    Виробництво неможливий2ban з джейлами PJSIP і стійким станом

    - Додати не2ban-configmap.yaml з [asterisk] і [freepbx-web] в'язниці, неперервне закріплення заборони (1h→24h→30d стеля), LAN ігнорувати, і Призначений для користувача asterisk-безпека.conf фільтрування цільових записів PJSIP SecurityEvent - Конфігурація кріплень 2ban-config і hostPath /var/lib/pbx/fail2ban (ban стан зберігається через pod перезавантаження) в обох розгортаннях k1m1 і k2m1 - Конфігурації дроту в стартапі.sh перед невдалим2ban-client старт на обох вузлах

  24. · kamo-shared-library

    Add resetHasAttachmentsForFolder query to ConversationRepository

    Allows sync to reset stale has_attachments flags before re-indexing so corrected MIME detection can rebuild the field from actual attachment data.

  25. · KlusterServices

    Integrate Coqui TTS with norman voice (VCTK p267)

    - Deploy coqui-tts server (VCTK VITS model, CPU-only) as ClusterIP service on port 5002 with model cache at /var/lib/coqui-tts on k1m1 - Inject coqui_tts.agi into /var/lib/asterisk/agi-bin on each boot: calls HTTP API, caches 8 kHz mono WAV under sounds/coqui-tts/, streams via AGI STREAM FILE — use AGI(coqui_tts.agi,text) in any dialplan context - Write say.conf on each boot to route all Asterisk built-in say functions (digits, numbers, dates, times) through Coqui TTS

  26. · KlusterServices

    Add LAN DNS pod for split-DNS on k1m1

    Deploys a dnsmasq pod with hostNetwork on k1m1 that listens on 192.168.4.22:53. Overrides pbx.k1.kluster.kamocrm.com -> 192.168.4.22 so LAN phones reach the PBX directly without NAT hairpin. All other queries are forwarded to 8.8.8.8/8.8.4.4. Router DHCP must be pointed to 192.168.4.22 as the primary DNS server for LAN clients to pick this up.

  27. · kamo-internal

    Вкладка конфігурації платформи (Загальний / VOIP & SMS / System User / Розширений)

    Обгортання *********** в SettingsView з чотирма вкладками: - Загальний огляд платформи — загальний orgs, активний телефон-сервер кількість випадків, активна кількість екземплярів SMS-провідувача, останнє глобальне синхронізація VOIP частамп. *********************** - VOIP & SMS: редагування voipSyncIntervalMinutes (1..1440) і voipSyncEnabled, поверхня lastGlobalVoipSyncAt, плюс кнопка "Run Global sync зараз" Дзвінки SecurityService → VOIPService / внутрішньої/voip/sync-global. - Користувач системи: існуючий доступ до системи дає UI, що піднімається з КонфігураціяКлієнт дієслово в компонент вкладки (не зміна поведінки). - Розширений: Паралельна кнопка "Trigger Global VOIP тепер" для ops, плюс явне порожнє повідомлення про майбутні контрольи. КонфігураціяКлієнт тепер тонкий табличний оркестр. ВикористанняPlatformAdminGuard Залишилося на місці на рівні оркестрора, тому всі чотири табки закріплюються.

  28. · DaemonService

    Глобальна робота синхронізації VOIP (адміністративно-часовий інтервал)

    VoipGlobalSyncJob лікує кожну хвилину і, на кожну клітку, читає СистемаКонфігурація однотону, щоб визначити, чи є глобальна синхронізація: - Якщо voipSyncEnabled помилково → пропустити. - Якщо lastGlobalVoipSyncAt + voipSyncIntervalMinutes > тепер → пропустити. - Інакше: POST / внутрішньої/voip/sync-global до VOIPService з ВнутрішнійAuthFilter header; оновлення lastGlobalVoipSyncAt на успіх. Це дозволяє операторам платформи регулювати курс з моменту запуску ****************************************************************************************************************************************************************************************************************************************************************************** → VOIP & SMS без перезапуску DaemonService або сенсорні вирази корона. Зареєстрований в QuartzConfig разом з існуючими роботами. k8s/configmap.yaml додає щік cron (1- хвилини за замовчуванням) і kamo.services.voip.base-url + внутрішній.auth.secret так, що вихідний виклик HTTP може автентифікувати.

  29. · SecurityService

    Системний налаштування + кінцеві точки кінцевого огляду

    Платформа-широка конфігураційна поверхня, заглушка існуючого верхнього рівня-власника охоронець (matches SystemUserConfigController’s needTopLevelOwner шаблон). Призначення: - GET /api / Security /system-config — повертає рядок - PUT /api / Security /system-config — оновлення voipSyncIntervalMinutes / voipSyncEnabled. Часті оновлення підтримувані дії; інтервал 1..1440 хвилин. - GET /api/security/platform-overview — сукупні статисти (загальні оргії, Активний телефон / SMS екземпляр кількість, last sync частамп, поточний інтервал + ввімкнути прапор. - POST************************************************************************************************************************************************************************************************************************************************************* Дзвінки VOIPService / внутрішньої/voip/sync-global через внутрішню оператори платформи можуть вводити глобальну синхронізацію VOIP на вимогу Налаштування нової платформи → вкладка VOIP & SMS / розширена вкладка. Конфігурація: - kamo.services.voip.base-url (за замовчуванням до VOIPService кластерно-локальної адреси служби). - Використовує існуючі внутрішні.auth.secret.

  30. · VOIPService

    Контролери ресурсу Per-instance + Агрегат org + внутрішня синхронізація

    Перистентний ресурс CRUD (видатки / користувачі / пристрої / голосова пошта): ************* - VoipUsersController на /api/voip/instances/{id}/users - VoipDevicesController в******************************************************************************************************************************************************************************************************************************************************* ************* - Кожен GET приймає ?refresh=true to power-fetch від провайдера та освіжаючи кеш; В іншому випадку виступає локальний кеш для сапфі UI. - Кожна заявка про те, що клієнт і доставити місцевий кеш, щоб сукупний без очікування наступної запланованої синхронізації. - Voicemail GET /{vmId}/audio потокове відео з постачальника через StreamingResponseBody так що UI може <audio src=...> він безпосередньо. Org-агрегатор (VoipOrgAggregateController at /api/voip/org): - /Вимірювання, /користувачі, /devices, /voicemail зворотні рядки по кожному екземпляру з {instanceId, екземплярName} таблетки. UI надає дані в сукупний вкладки в /settings/features/phone. - /health перевіряє Здоров'я () на будь-якому активному екземплярі в паралельній перистансі (згідно з даними InstanceSync Service), повертає InstanceHealthDto[]. - POST /sync працює InstanceSyncService проти кожного активного екземпляра поточний org. Увімкніть кнопку "Sync this org тепер" в UI. Внутрішній синхронізація (VoipInternalSyncController): - POST / внутрішньої/voip/sync-global петлі всі діючі екземпляри платформи. Дзвоните до запланованого кварцу DaemonService. Захищені існуючими ВнутрішнійAuthFilter в VOIPService. Побудувати зелений.

Твій всесвіт чекає.

Почати безкоштовно за декілька хвилин. Додати продукти, коли ви будете готові — без перенесення, без нових реєстрацій.

Безкоштовно назавжди — не потрібна кредитна карта