Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· VOIPService
Расширение Sync TeamMember phoneWork для сохранения конфигурации VOIP
· SecurityService
Расширение Backfill TeamMember phoneWork от MemberVoipConfig для стартапа
· kamo-internal
Настройки функций вызова проводной связи сквозная абстракция провайдера
- voipApi: добавьте CallFeaturesDto, getCallFeatures() и setCallFeatures() API-звонки - useSoftphone: add ************* state loaded от API при запуске; действия setCallForward/setAutoAnswer сохраняются через API; автоответ и эффекты вызова вперед вызывают входящие вызовы, когда функции активны - SoftphonePanel: удалите состояние функции вызова только локально; проволока Call Forward Toggle и ввод номера в контекст софтфона; проводной автоматический ответ на переключатель на контекст софтфона; Переименовать кнопку nav в «Manage Extended A/V» Настройки Синхронизация аудио слайдеров уже была функциональной с помощью шины событий UseAVSettings — никаких изменений не требуется
· VOIPService
Добавить функции вызова API — вызов вперед + автоответ, проводной через абстракцию провайдера
Добавить CallFeaturesDto и SetCallFeaturesRequest - Добавить флаги CallForward/autoAnswer для ProviderCapabilities - Добавить по умолчанию getCallFeatures/setCallFeatures в интерфейс PhoneProvider RingCentral: реализация с помощью Правил Ответов REST API (безусловный переадресация) FreePBX реализуется с помощью GraphQL addCallforward CallFeaturesController: GET/PUT/api/voip/calls/features — первичная синхронизация с провайдером
· kamo-shared-library
Добавить элемент MemberCallFeatures и репозиторий для предпочтений переадресации вызовов и автоматического ответа
· kamo-asterisk-support
Начальное обязательство — FreePBX загрузчик записи (GO)
Часы **************** для готовых записей WAV, группы многоногих ног вызова Asterisk UNIQUEID и загружает каждую партию в APIService /api/voip/recordings/upload с использованием VOIP RECORDING UPLOADS-scoped Ключ API. Файлы удаляются с диска только после подтверждения платформы хранения. Bootstrap обеспечивает пользователя AMI через manager custom.conf и Устанавливает MixMonitor() на крюки каналов через extensions custom.conf Asterisk перезагрузит свои модули dialplan/manager. Оба управляемых блока Они окружены четко обозначенными баннерами, поэтому настройки администратора выживают. Включает Dockerfile, манифесты k8s для k1m1 и k2m1 (Развертывание + ConfigMap +) Секретный шаблон), ****************, отражающий остальные Платформа и нетехнический README.txt для автономных хостов FreePBX.
· kamo-internal
VOIP RECORDING UPLOADS scope + счетчики/настраиваемые устройства для записи трубопроводов
APIManager: новая опция VOIP RECORDING UPLOADS (используется службой поддержки Камо-Астериск) на хостах FreePBX для загрузки голосовой почты и записи вызовов через APIService. VoipSmsTab: новая карта «Запись трубопровода» с четырьмя счетчиками процесс, звонки в процессе, голосовые сообщения по ошибке, звонки по ошибке - обновляется каждые 30 лет, использует **************** Новое "Запись Обработка" карты с помощью voipVmBatchSize/voipCallBatchSize/voipPollSeconds Настраиваемые. - systemConfigApi: продлить обновление() для отправки новых настраиваемых файлов; добавить записьStats(). Типы/телефон: SystemConfiguration Dto получает три новых настраиваемых; Добавлена VoipRecordingStatsDto.
· SecurityService
System-config recording stats + настроек для обработки записей
- Получить **************** Возвращает четыре стойки экспонируется на камо-внутренних настройках → Платформа → Конфигурация → VoIP/SMS Закладка (vmPending, callPending, vmError, callError). - PUT/api/security/system-config теперь принимает voipVmBatchSize, voipCallBatchSize, voipPollSeconds для настроек записывающего процессора DaemonService. ToDto() включает новые поля, чтобы интерфейс мог прочитать их обратно.
· DaemonService
RecordingProcessorJob + NATS для свежих загрузок
Новый кварцевый вакансии ЗаписьПроцессорДжоб тикает каждую минуту, рассылает независимые VM и вызов партий одновременно в ConversionService **************************** **************************** voipCallBatchSize. - Новый RecordingReceivedConsumer подписывается на voip.recording.received NATS Subject Излучается ConversionService на свежих загрузках и запускает немедленный запуск, поэтому Новая запись начинает обрабатываться в течение нескольких секунд, а не ждать О периодическом опросе. - Configmap разоблачает daemon.jobs.recordings.cron **************** — это разговор.
· ConversionService
Запись глотка + конвейер обработки FFmpeg
Новый **************** конечные точки многочастная загрузка Пересылается APIService в корзину MinIO **************** и создает необработанную строку записи. Idempotent на ретрис Использование (phoneServerId, asteriskUniqueId). - Новая конечная точка **************** (названная DaemonService) дренажные ряды: загружает постановочные WAV, смешивает ножки вызова в один Opus / WebM мастер через FFmpeg amix, транскодирует по каналу WAV в качестве треков рядом с мастер и загружает через RecordingImagingService с VM RECORDING (8) CALL RECORDING (9) ImageAssocType. Новая обертка FfmpegService (transcodeToOpusWebm / mixToOpusWebm) с тайм-аутом и очистка от вампиров. Издатель NATS издает voip.recording.received на каждой постановочной загрузке DaemonService может сократить свой периодический опрос. Dockerfile устанавливает ffmpeg на стадии выполнения (альпийские корабли ffmpeg) Либопус по умолчанию. - ConfigMap показывает **************************** (общий кросс-сервис) Секрет внутреннего вызова), чтобы новые конечные точки могли аутентифицировать APIService и Абоненты DaemonService.
· APIService
VoipRecordingUploadController для загрузки с поддержкой Камо-астерикса
POST/api/voip/recordings/upload принимает многокомпонентные кузова от kamo-asterisk-support Работает на FreePBX хостах. X-Api-Key получил новый VOIP RECORDING UPLOADS - объем (повторное использование кэша проверки *************), затем пересылает многочастную полезную нагрузку + заголовки метаданных (X-Phone-Server-Id, X-Asterisk-Unique-Id, X-Recording-Kind, X-Primary-Extension ****************************
· kamo-shared-library
UnprocessedRecording Staging entity, ImgDat track tracks, служба записи изображений
- Исправить столкновение ImageAssocType ID: VM RECORDING=8, CALL RECORDING=9 (были оба) дублирование MY DOCS при 4. Добавьте *******************, чтобы мастер-запись могла По каналу Opus/WebM идет параллельно с существующей концепцией миниатюр. - Добавить ImageMimeType.AUDIO WEBM (аудио/вебм) для контейнеров Opus-in-WebM Производится конверсионным трубопроводом. - Новая необработанная запись (UUID id, IS VM, PHONE SERVER ID, EXTENSION, ASTERISK UNIQUE ID, IS PROCESSED, IS ERROR, ERROR MESSAGE, RESULT IMG ID, DATE CREATED, DATE PROCESSED) staging entity + repository for the kamo-asterisk-support → ConversionService → Трубопровод DaemonService. Новая записьImaging Сервис, который загружает мастера Opus / WebM для визуализации с помощью треков Opus/WebM, подключенных через ImgDat.trackCount. - SystemConfiguration: add voipVmBatchSize/voipCallBatchSize/voipPollSeconds для настроек записывающего процессора DaemonService.
· kamo-asterisk-support
Начальное обязательство — FreePBX загрузчик записи (GO)
Часы **************** для готовых записей WAV, группы многоногих ног вызова Asterisk UNIQUEID и загружает каждую партию в APIService /api/voip/recordings/upload с использованием VOIP RECORDING UPLOADS-scoped Ключ API. Файлы удаляются с диска только после подтверждения платформы хранения. Bootstrap обеспечивает пользователя AMI через manager custom.conf и Устанавливает MixMonitor() на крюки каналов через extensions custom.conf Asterisk перезагрузит свои модули dialplan/manager. Оба управляемых блока Они окружены четко обозначенными баннерами, поэтому настройки администратора выживают. Включает Dockerfile, манифесты k8s для k1m1 и k2m1 (Развертывание + ConfigMap +) Секретный шаблон), ****************, отражающий остальные Платформа и нетехнический README.txt для автономных хостов FreePBX.
· kamo-internal
Замените макет контактной вкладки на полнофункциональный SoftphoneContacts
Извлекает новый компонент SoftphoneContacts, который подключает контакты софтфона Закладка на реальные контакты API через useContacts(). Заменить 4 жестких макета контакты с живыми данными из всех контактных книг. Особенности: - Таблетки для книг и групповых фильтров с выпадающими селекторами Объявленный поиск, сортировка по последнему / первому / полному имени Цветные инициалы аватара (детерминированный хеш), поддержка фотографий - Список контактов с кнопкой быстрого вызова - Подробный просмотр (заменяет список), показывающий телефоны, электронные письма, документы, заметки Режим встроенного редактирования для всех полей (телефоны / электронные письма с несколькими значениями с добавлением / удалением) - Исключить контакт с этапом подтверждения Пустые и загружающиеся скелетные состояния - "Новый контакт" переходит на /контакты? Действие = Создать Обновляет контакты / page.tsx, чтобы автоматически открыть диалог создания, когда Присутствует ?action=create query param (используется кнопкой софтфона «Новый»).
· kamo-internal
Замените расширение Chip встроенным текстом рядом с ролью в Центре взаимодействия
· kamo-internal
Удалите поле расширения телефона вручную; запишите расширение VOIP в службу безопасности
· SecurityService
Включите расширение phoneWork в ответ отдела; примите расширение phoneWorkExtension на члене PUT
· kamo-shared-library
Добавить **************** помощников в TeamMember
· kamo-internal
Wire VAD + push-to-talk; удалите нереализуемые настройки
- vadEnabled теперь проходит как VoiceActivityDetection в сборке Браузер выполняет переключатель при открытии микрофона для вызова - pushToTalk автоматически изменяет микрофон при приеме вызова и устанавливает keydown/keyup Слушатели, которые отключают, пока настроенный горячий ключ удерживается - Удаленные настройки, которые не имели функциональной проводки и не могут быть реализованы через стандартный браузер WebRTC API: micGain (без GainNode в SIP конвейере), HighPassFilter, noiseGate, vadThreshold, hdVoice, cameraBackgroundBlur (требуется ML), CameraBrightness/cameraContrast (только предварительный просмотр CSS) - Очистка интерфейса AVSettings и DEFAULT AV SETTINGS соответственно; перебалансированные сетки переключения после удаления
· kamo-internal
Прокручиваемый список рингтонов с фильтром поиска
Сделайте панель каталога рингтона соответствующей высоте правой колонны и прокрутке вертикально, когда список переполнен, поэтому участники могут перемещаться как больше тонов. добавляются. Добавляет поле поиска, которое фильтрует по ярлыку или имени файла, с помощью Чистая кнопка и сообщение с пустым состоянием.
· kamo-internal
Добавить еще семь рингтонов в каталог
Боевой корабль Horn, Demon Horn, Land Line, 1985 Ring, Office Phone Ringing Old Phone, Olé under/public/sounds/ringtones/ and wires В RINGTONE CATALOG они появляются вместе с существующими. Варианты по умолчанию / Sci-Fi / Buzzer / Silent на субтабе Ringtones.
· kamo-internal
Добавьте рингтоны Sci-Fi и Buzzer в каталог
Сбрасывает два новых актива рингтона под /public/sounds/ringtones/ и Зарегистрируйте их в RINGTONE CATALOG, чтобы они появились в Ringtones. subtab и может быть установлен как входящий по умолчанию тон софтфона.
· kamo-internal
Трехколонный аудио макет, выпадающий сохраненный баннер, заполняющий ширину
Укладывает субтаб аудио как микрофон | Спикер | Продвинутый через полный ряд на экранах lg+ (md по-прежнему соединяет их в пары, xs стек). The Продвинутая карта переключается на вертикальный стек внутри более узкой колонки. Удаляет следящий «Настройки сохранены автоматически» нижний колонтитул — Поведение неявно, и карта просто занимала место. Сила секционных карт панелей до ширины: 100% и добавляет выравнивание элементов = "растяжка" Для каждой подтабной сетки карты всегда заполняют колонку от края до края.
· kamo-internal
Разделите настройки AV на Audio/Video/Ringtones
Реорганизует вкладку «Аудио/Видео» в три внутренних подзадачи и закладки каждый из них горизонтально, так что настройки вписываются в видоискатель без Стена вертикальной прокрутки, которую мы имели раньше. Также фиксирует каталог рингтонов, чтобы указать на реальный /sounds/ringtone.mp3 вместо фантомных путей /sounds/ringtones/, так что предварительные просмотры и всегда включенная сессия софтфона Один канонический рингтон.
· kamo-internal
Добавьте вкладку Audio / Video Settings и подключитесь к софтфону
Добавляет магазин AV-предпочтений для каждого устройства (локальное хранилище, специфичное для машины). не роуминг) плюс полнофункциональная вкладка на /settings/member/<id> Настройка и тестирование микрофона, динамика, звонка и камеры. Окно инструмента для софтфона, воспроизведение рингтона и адаптеры SIP SDK теперь соблюдать эти настройки в прямом эфире: маршрутизация устройства через setSinkId, getUserMedia ограничения (deviceId + EC/NS/AGC/таблица), объем тона DTMF, кольцевое устройство + выбор тонов, немое на соединении и уведомления рабочего стола.
· kamo-internal
Всегда включенная SIP-сессия с автоматическим всплывающим + рингтоном на входящих звонках
Софтфон использовался для регистрации только тогда, когда окно всплывающего инструмента было открыто. Закройте его, и входящие звонки были молча пропущены. Поднять сессию в a SoftphoneProvider установлен на AuthenticatedToolWrapper, поэтому SIP REGISTER удерживается непрерывно, пока оператор подписан и любое входящее приглашение Это привлекает внимание оператора. - app/hooks/useSoftphone.ts: переименовать крючок реализации в ИспользованиеSoftphoneSession для усиления того, что он должен быть установлен ровно один раз за сеанс (владеет учетными данными SIP и регистратора). ************* Новый SoftphoneProvider запускает сеанс Крюк один раз, раскрывает состояние через контекст и реагирует на входящий Звони. Переходы — выскакивает окно инструмента для софтфона через инструмент: открытое пользовательское событие (единая инстанция, поэтому он просто фокусируется, если уже открыт) с идентификатором вызывающего абонента заголовок и проигрывает /sounds/ringtone.mp3 по петле до пользователя Принимает/отклоняет/удаленное висит. Общественное использованиеSoftphone() hook читать из контекста. ************* Переключить импорт на контекст. **************** Оберните дерево инструментов SoftphoneProvider, так что сеанс длится до тех пор, пока состояние auth. классическая каденция NA (440 Гц + 480 Гц, 2s on, 4s silence), так что audio.loop = истинно Получает естественный рисунок кольца/паузы/кольца. ~72 КБ. Браузеры могут блокировать начальную игру () до тех пор, пока пользователь не нажмет на страница; оператор обычно нажимал по крайней мере один раз к моменту вызова Приходит, так что это редко проблема на практике.
· KlusterServices
Seed pbx.k1.kluster.kamocrm.com как статический домен
Софтфон браузера нуждается в SIP-over-WSS, чтобы приземлиться на имя хоста с реальным Серт TLS. Добавьте админ FreePBX / WS имя хоста в STATIC DOMAINS Auto-cert seeder provisions a per-host Let's Encrypt cert for it Вместо того, чтобы полагаться на него, он появляется в журналах доступа Traefik. После выдачи сертификата временный внутренний путь .kamocrm.com/voip-ws (предпринятый ранее в качестве обходного пути) может быть удален, и софтфон может используйте канонический pbx.k1.kluster.kamocrm.com/ws URL.
· kamo-register
Используйте краткое имя и описание в HTML-главе
Заменить логику заголовка на основе org-API на сайт config.jsonNameShort Заголовок следует той же схеме, что и другие сайты: «Регистрация — {siteNameShort}». Добавлен метатег описания от config.json. Удалить неиспользованный импорт ThemeConfig.
· kamo-login
Используйте краткое имя и описание в HTML-главе
DynamicMetaLoader теперь устанавливает document.title на "Login - {siteNameShort}" и записывает описание организации в метатег описания. Обновлен запасной вариант Static layout.tsx; удалены метаданные KamoCRM OG/Twitter.
· kamo-internal
Используйте краткое имя и описание в HTML-главе
DynamicMetaLoader теперь устанавливает document.title на siteNameShort и записывает описание организации в метатег описания. Обновление Static layout.tsx до общих значений.

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта