Доступный/недоступный переключатель для бэкэнда и исправление ошибки присутствия OFFLINE
Переименовать приостановленный/активный чип в доступный/недоступный в NavTop Получите начальную доступность на монтировке и сохраняйте переключатели через новый...
Увеличить ТТЛ с 90-х до 300-х, чтобы предотвратить ложное дросселирование на вкладке
Добавить доступно для ответов отдела и меня / конечных точек доступности
Переписать все запросы/мутации GQL на интроспекции живых схем
Проверяли каждое имя поля и тип по фактической схеме FreePBX 17. Полный набор исправлений: Вопросы: - fetchAllExtensions: удалите из расширения несуществующее ...
Pass selectedFolder to ThreadDetailView so email:folder-changed fires with a valid folder
conversation.folder всегда не определен, потому что Java ConversationEntity У него есть папки (текст), а не поле строки папки. Это привело к тому, что нагрузка ...
Исправьте имя поля GraphQL для fetchAsteriskDetails
FreePBX API возвращает «Вы имели в виду fetchAsteriskDetails?» соответственно проверить запрос и его доступ к пути передачи данных.
Добавить заголовки XHR/Accept и парсинг струнных ответов для клиента GraphQL
Тот же шаблон, что и FreePBXTokenCache: добавьте X-Requested-With + Accept: Application/json подавление HTML-ответов FreePBX и переключение всех трех сайтов выз...
Sync mailbox dropdown to primary mailbox on load скачать бесплатно
Dropdown не попал в первый список, потому что выбранный Mailbox инициализировался без почтового ящика, в результате чего текущая ценность решается обнажить «лич...
Увеличить размер загрузки файла до 500 МБ
Spring Boot по умолчанию колпачок многочастных частей на 1 МБ, вызывая фоновое изображение Загружается, чтобы выйти из строя с 500 в request.getParts(). Служба ...
Поверхностные ошибки HTTP, поэтому сбои загрузки видны
Заменить немую консоль.warn на бросок Ошибка на неОК статус, чтобы пользователь видел фактическую причину отказа (статус + орган реагирования) Вместо того, чтоб...
Добавьте заголовки Accept + XHR и анализ ответов на исходную строку для конечной точки токена
FreePBX возвращал текст/html при вызове через кластер DNS. Заголовок хоста не соответствовал настроенному PBX HOSTNAME. Добавить Принять: приложение/json и X-Re...
Привод минимизированного ввода через элементы управления анимацией
Переключение aimate={...} на aimate={tabControls} нарушило запись анимация: у tabControls нет цели в очереди на монтировке, поэтому кнопка осталась в исходном п...
Исправьте строки OAuth2 для FreePBX API
FreePBX - это идентификаторы верхнего уровня: gql (все GraphQL) и «Отдых» (All REST) Формат gql:read означает GQL для модуля Называется «чтение», которого не су...
Live unread badge + отказ от нового сообщения агента
- поддерживает LiveSupportPanel вне экрана, в то время как виджет сведен к минимуму (только при наличии сеанса поддержки), поэтому подписка STOMP остается Живые...
Экспозиция порта 8088 непосредственно в сервисе ClusterIP
Сервис имел только порт 80→8088 отображения. Внутренние службы используют **************************** (например, токен VOIPService API) Запросы были отсрочены,...
Trust backend pendingCount, drop client offsets (недоступная ссылка)
Backend pendingCount теперь не читается (сессии SUPPORT TICKET) С сообщениями новее, чем у последнего посетителя. Когда агент открывается билет, MarkAsRead → бэ...
Трансляция в ожидании счета + непрочитанный агент читать и посетитель отправить
**************** теперь делегаты ************************************* отражает сеансы с непрочитанными сообщениями посетителей и сокращениями, когда Агент вызы...
Нечитанный счет + помощник по поиску по сессии
Добавлено **************** Так что навигатор Значок SupportButton может считать билеты поддержки, которые действительно нужны внимание (непрочитанные сообщения ...
Добавить недостающий отказ2ban-config ConfigMap для k1m1
Ссылки на развертывание fail2ban-config ConfigMap (jail.local +) asterisk-security.conf) но его не существовало, заблокировав подставку на МаунтВолуме. Настройк...
Восстановление, чтобы вытащить последнюю библиотеку, разделенную Камо
Выберите новый **************** запросы и Отделение SUPPORT TICKET в ****************
MarkAsRead после того, как агент отправил такой последний просмотренный аванс
На билетах поддержки как сообщения посетителя, так и сообщения агента хранятся под тот же системный член, поэтому непрочитанный запрос является члено-агностичес...
Билеты поддержки требуют член-агностик непрочитанный счет
Сообщения посетителей о билетах поддержки хранятся в той же системе что агент аутентифицируется как, поэтому существующая сессия ЧАТ не прочитана запросы, котор...
Добавить logging для загрузки Background endpoint
Log org/index, информация о файлах, userId, решения auth и постановка MinIO Ключ, чтобы проследить, почему фоновые загрузки не появляются в ковше для постановки...
Добавить логинг для загрузки фонового прокси-маршрута
Log org/index, имя файла/размер/тип и статус ответа Чтобы диагностировать, почему фоновые загрузки не достигают APIService.
Добавить столбец местоположения в дейтагрид билета
Читать **************************** прямо с SupportTicketDTO (сейчас снимок на билете) Время создания — никаких дополнительных поездок туда и обратно. Флаг + го...
Магазин гео на билете при создании, скачать GeoLite
****************************************************************************************************************************************************************...
Снимок гео посетителя на билете
Добавлены VISITOR IP ADDRESS, VISITOR COUNTRY CODE, VISITOR COUNTRY NAME, VISITOR CITY, VISITOR SUBDIVISION колонки. Запечатлено при создании билетов Таким обра...
Посетители с большой нагрузкой и пропустите поиск GeoLite в списке
Конечная точка списка /api/support/tickets была запущена на странице из 20 строк: - 20 **************** звонков (N+1) - 20 звонков на GeoLookupService.lookup, к...
Добавить findBySessionGuidIn для сыпучих погрузок
Используется конечной точкой списка поддержки, чтобы привлечь всех посетителей для страница в одном запросе вместо N отдельных вызовов findBySessionGuid.
Перейти папку для загрузки Thread retry button
loadThread takes (threadId, папка); кнопка восстановления состояния ошибки Прошел нить Id, нарушив камо-внутреннюю сборку. Совместить призыв к Подпись.
Восстановление личности участника JsonIdentity Обсуждение Kamo-shared-library
kamo-shared-library b57d156 fixes @JsonIdentityInfo (собственность = "уникальный") • «id» на элементе, разрешающий 400 ошибок на PUT/api/security/org/{id}.
Правильная идентичность Json Информационное свойство от «уникального» до «идного»
Предприятие-член объявило @JsonIdentityInfo (собственность = «уникальный идентификатор»), но Настоящее поле первичного ключа называется «id». Джексон бросил "не...
Добавить /ws/public-chat-native точку WebSocket вместе с SockJS
Регистрация второй конечной точки STOMP без SockJS в /ws / public-chat-native что интерфейс может подключаться к нативному WebSocket (brokerURL) без необходимос...
Удалите SSR Guard, вызывая несоответствие гидратации; сбросьте SockJS для родного WebSocket
Hero.tsx: удалите тип проверки окон вокруг ParticleField имеет ssr:false, поэтому охранник произвел несоответствие дерева сервера / клиента (React #418) - LiveS...
Per-ticket unread badge + фильтр «Только новые сообщения»
- Список билетов показывает значок чат-пузырь с непрочитанным счетом рядом Билет # всякий раз, когда на сеансе есть сообщения новее, чем у агента Последнее прос...
Трансляция непрочитанного сообщения агенту в сообщении посетителя
После того, как посетитель отправит сообщение поддержки, нажмите последние непрочитанные счета. Полезная нагрузка ******************* так агент билет-лист Обнов...
Включите сессии SUPPORT TICKET в непрочитанный запрос на членство
findChatMembershipsByMemberId теперь возвращает членство как для CHAT, так и для CHAT. Типы сеансов SUPPORT TICKET, так что существующий на члена непрочитанный ...
Явные непрочитанные индикаторы при открытии разговора
ThreadDetailView теперь отправляет электронную почту: папка изменена после MarkConversationRead Успешно, поэтому MailButton восстанавливает количество значков в...
Move CORS to Traefik via kamo-middlewares, remove in-app CorsFilter
The CorsFilter @Bean in the Spring app was silently not applying headers after WebConfig.java was removed. CORS is now handled entirely at the Traefik layer by ...
Use /public/{mainDomain}-{tld} path matching actual MinIO bucket layout
GetThemePath() генерирует /domain/{tld}/{split}/kamosite пути, которые Не существует в MinIO — тематические файлы живут в публичном ведре kamocrm-com/, baddi3-c...
Разорвать цепочку Min-W-0, чтобы содержать прокрутку электронной почты только в колонке тела
Добавить min-w-0 во внешний контейнер и основной контент flex div, так что гибкие дети не может расширяться до ширины содержимого электронной почты, что привело...
Поставщики хостинга выше ToolProviders
Та же первопричина, что и подъемник ChatWebSocketProvider: SupportTicketWindow звонки ********************************************** использовать Unread().markA...
Добавить suppressHydrationWarning и исправить неработающие изображения
hydrationWarning на <html> предотвращает ошибку React #418, вызванную браузером расширения (например, перевод, темный режим) мутирующие атрибуты html между SSR ...
Разрешить префикс /domain/ path на тему IngressRoute для CORS
Конфигурация темы на theme.kamocrm.com/domain/... не соответствовала Существующие правила маршрута (разрешены только /публичные / и /внутренние /) Вернулся 503 ...
Удалите дубликаты CorsFilter и разберите заголовки CORS в шлюзе
WebConfig.java определил второй CorsFilter, конкурирующий с CorsConfig. Ява бобы, рискуя дублировать заголовки. Удален, поэтому существует только один CorsFilte...
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.