WebRTC выживет после перезапуска
Предыдущий подход (http custom.conf с [общим] override) не На самом деле вступает в силу, потому что INI-парсер Asterisk не чтит множественные [Общие] разделы в...
Включить встроенный HTTP-сервер Asterisk на :8089 для WebRTC /ws
Транспортный маршрут Chan pjsip 'protocol=ws' поверх res http websocket Что, в свою очередь, требует запуска встроенного HTTP-сервера Asterisk. The FreePBX 17 п...
Приоритет реального имени / фамилии пользователя для отображения
usernameAlias - это функциональная ручка входа (часто равная имени пользователя), Не отображаемое имя. Настоящие человеческие имена живут на User.name (EmbNameF...
Scope Добавить свинцовый свиток и нижний колонтитул в область контента
Форма использовала minHeight: 100vh внутри родителя. calc (100vh - 56px), заставляя внешнюю полосу прокрутки, даже когда контент подходит. В экшн-баре также исп...
Умный многоколонный макет для формы Add Lead
Перестройте страницу в сетку верхнего уровня, чтобы разделы составляли горизонтально. Вместо растяжки отдельных полей: - Market & Assignment использует 3-цветн...
Использование /api/security/members/names для разрешения имени назначенного члена
Фильтры конечных точек для активных членов команды, отсутствуют Задания членам базы или неактивным членам. Переключитесь на имена, которые возвращает всех члено...
Полная ширина Добавить форму свинца и клиренс для липкого футера
Бросьте 1200px max-ширину на /leads/new, чтобы форма охватывала область страницы. и ударная нижняя обшивка, чтобы липкая панель действия больше не перекрывала П...
Решите имя дисплея с правильным приоритетом в конечной точке отдела
Приоритет: member.usernameAlias → user.name.formatFull() → user.alias → user.username
Добавить недостающее поле isDisplayOnIntake в интерфейс FormField и новое поле
Используйте тип строки для назначенногоMemberId для предотвращения потери точности
Сериализация длинной строки для предотвращения потери точности JS на больших идентификаторах CockroachDB
Скрыть карту ATF полностью, когда все поля заблокированы прикладной моделью
Пробная мастер-модель конечной точки и исправление AppliedModel org ID
- Заменить шлюз на основе AppliedModel.source прямым зондом /api/security/master-model on mount; r.ok=false (409) управляется типом ветви — тот же самый контрол...
Gate censorship tab options by applied model constraints
- Hide EDIT MASTER MODEL button when org is governed by a branch type (use appliedModel.source instead of unreliable org context branchTypeID) - Hide ATF fiel...
Mark-as-read and message fetch for shared/member mailboxes
Classic mode now loads shared mailbox messages via the correct /messages/{folder} endpoint (was calling the non-existent /conversations endpoint). Fetching a fu...
Mark-as-read for shared and member mailboxes
EmailController.setFlags now accepts an optional mailboxId query param and routes through resolveProviderWithMailbox so member-mailbox flags are set against the...
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...
Обработка IMAPInputStream в getMessage для предотвращения ClassCastException
JavaMail может вернуть IMAPInputStream вместо декодированной строки Part.getContent() - когда содержание сообщения не было предварительно придумано. The Прямые ...
Увеличить ТТЛ с 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 для модуля Называется «чтение», которого не су...
Экспозиция порта 8088 непосредственно в сервисе ClusterIP
Сервис имел только порт 80→8088 отображения. Внутренние службы используют **************************** (например, токен VOIPService API) Запросы были отсрочены,...
Trust backend pendingCount, drop client offsets (недоступная ссылка)
Backend pendingCount теперь не читается (сессии SUPPORT TICKET) С сообщениями новее, чем у последнего посетителя. Когда агент открывается билет, MarkAsRead → бэ...
Добавить недостающий отказ2ban-config ConfigMap для k1m1
Ссылки на развертывание fail2ban-config ConfigMap (jail.local +) asterisk-security.conf) но его не существовало, заблокировав подставку на МаунтВолуме. Настройк...
MarkAsRead после того, как агент отправил такой последний просмотренный аванс
На билетах поддержки как сообщения посетителя, так и сообщения агента хранятся под тот же системный член, поэтому непрочитанный запрос является члено-агностичес...
Билеты поддержки требуют член-агностик непрочитанный счет
Сообщения посетителей о билетах поддержки хранятся в той же системе что агент аутентифицируется как, поэтому существующая сессия ЧАТ не прочитана запросы, котор...
Перейти папку для загрузки Thread retry button
loadThread takes (threadId, папка); кнопка восстановления состояния ошибки Прошел нить Id, нарушив камо-внутреннюю сборку. Совместить призыв к Подпись.
Правильная идентичность Json Информационное свойство от «уникального» до «идного»
Предприятие-член объявило @JsonIdentityInfo (собственность = «уникальный идентификатор»), но Настоящее поле первичного ключа называется «id». Джексон бросил "не...
Удалите SSR Guard, вызывая несоответствие гидратации; сбросьте SockJS для родного WebSocket
Hero.tsx: удалите тип проверки окон вокруг ParticleField имеет ssr:false, поэтому охранник произвел несоответствие дерева сервера / клиента (React #418) - LiveS...
Явные непрочитанные индикаторы при открытии разговора
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...
Удалите дубликат CorsFilter, вызывающий двойной заголовок Access-Control-Allow-Origin
Явная фасоль CorsFilter вызвала второй CORS-фильтр вместе с Spring. Встроенная поддержка CORS (с использованием CorsConfigurationSource) Оба фильтра решили шабл...
Удалите заявления debug console.log и добавьте недостающие маршруты
Удалить все временные отладки, добавленные во время отслеживания WebSocket ChatBox, TicketChat, MemberItem, ChatTool и используйте ChatWebSocket; перенаправить ...
Предотвращение расширения колонки заголовка сообщений на длинные адреса
У левого гибкого ребенка заголовка не было min-w-0, так долго нерушимая электронная почта адреса в From/To/Cc заставили его ширину мин-контента расти Надпись (и...
Hoist ChatWebSocketProvider выше ToolProvider
ToolDock (и его окна инструментов, такие как SupportTicketWindow → TicketChat) монтируется внутри ToolProviders, который сидит над обёрткой присутствия на дерев...
Как вы видите судоходство?
Все это приходит в ваше рабочее пространство самостоятельно. Начните с бесплатного плана и прочитайте эту страницу через месяц.
