Выбор сервиса распознавания речи: Yandex SpeechKit, SaluteSpeech (Сбер) или бесплатное распознавание в браузере посетителя (Web Speech API, без ключей).
Резервный сервис распознавания: при сбое основного запись автоматически отправляется в резервный серверный сервис, либо посетителю предлагается повторить фразу с распознаванием в браузере. После 3 сбоев подряд сервис отключается на 5 минут, чтобы посетители не ждали таймаутов.
Безопасность: AJAX-обработчики переведены на контроллер D7 (BX.ajax.runAction) с проверкой метода POST и CSRF-токена; старые файлы proxy.php, recognize.php и search.php в папке компонента удаляются при обновлении. Проверка SSL-сертификатов при обращении к сервисам, ограничение размера и формата записи, лимиты распознаваний в минуту на посетителя и на IP-адрес. Ключи и токены проверяются на допустимые символы перед отправкой в заголовках запросов.
API-ключи на странице настроек не раскрываются: в поле выводится маска **** и последние 4 символа ключа. Сохранение с маской или пустым полем ключ не меняет.
Обновлены шаблоны компонентов: форма поиска свёрстана на Bootstrap (input-group) вместо таблицы, кнопка поиска с иконкой лупы, кнопка микрофона - доступная кнопка внутри поля с индикацией записи, подсказки в стиле выпадающего списка. Без Bootstrap форма выглядит так же за счёт встроенных стилей.
Исправлены подсказки поисковых фраз: выпадающий список появляется под полем ввода, работает выбор стрелками, Enter и мышью.
Несколько форм поиска на одной странице больше не мешают друг другу (распознанный текст попадает в своё поле, ошибки выводятся у своей формы).
При включённой настройке «только для авторизованных» кнопка микрофона не показывается гостям.
Новые настройки: язык распознавания и длительность записи. Повторный клик по микрофону останавливает запись досрочно.
В журнал событий пишется сервис, HTTP-статус и сетевая ошибка (DNS, SSL-сертификат, таймаут), если запрос не дошёл до сервиса.
Скрипт инициализируется через BX.ready и работает с композитным сайтом; зависимость от jQuery удалена.
Совместимость с PHP 8.2 - 8.5 с сохранением работы на PHP 7.1+.
Минимальная версия главного модуля - 20.0.0.
Если вы копировали шаблоны компонентов alkodesign:search.form или alkodesign:search.suggest.input в шаблон сайта, обновите в копии template.php, script.js и style.css.