Добавить отображение имени участника и кнопку unassign на вкладку расширения per-instance
Покажите имена членов и добавьте действие Unassign на вкладку расширений уровня org
Конфигурация Wire VOIP для селекторов с расширением провайдера + с обеспечением выполнения задания
Добавление типизированных DTO, удаление метода API и обновление типов MembershipPermissionsTab VOIP
Добавить конечную точку назначения DELETE в VoipExtensionsController для администратора unassign
Добавить MemberVoipConfigController для VOIP-конфигурации члена с назначением расширения
Добавить findByAssignedMemberId методы запроса в PhoneExtensionRepository
Скрыть карту 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...
Постоянный активный почтовый ящик в парамах запросов URL
Переключение почтовых ящиков теперь обновляет URL (?mailboxType, ?mailboxId, ?mailbox) Обновление браузера восстанавливает тот же почтовый ящик. Браузер сообщен...
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...
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 badg...
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 h...
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.
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 Прямые ...
Показать баннер с активным предложением с живым обратным отсчетом миллисекунд
Получает активную сторону сервера продвижения на главной странице и отображает HeroOfferBanner между подзаголовком и бесплатным вызовом. Баннер показывает сумму...
Доступный/недоступный переключатель для бэкэнда и исправление ошибки присутствия 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 после того, как агент отправил такой последний просмотренный аванс
На билетах поддержки как сообщения посетителя, так и сообщения агента хранятся под тот же системный член, поэтому непрочитанный запрос является члено-агностичес...
Билеты поддержки требуют член-агностик непрочитанный счет
Сообщения посетителей о билетах поддержки хранятся в той же системе что агент аутентифицируется как, поэтому существующая сессия ЧАТ не прочитана запросы, котор...
Как вы видите судоходство?
Все это приходит в ваше рабочее пространство самостоятельно. Начните с бесплатного плана и прочитайте эту страницу через месяц.
