Speech recognition service selection: Yandex SpeechKit, SaluteSpeech (Sber), or free browser-based recognition for the visitor (Web Speech API, no keys).
Fallback recognition service: in case of main service failure, the recording is automatically sent to the fallback server service, or the visitor is prompted to repeat the phrase with browser-based recognition. After 3 consecutive failures, the service is disabled for 5 minutes to prevent visitors from waiting for timeouts.
Security: AJAX handlers have been migrated to the D7 controller (BX.ajax.runAction) with POST method and CSRF token verification; old proxy.php, recognize.php, and search.php files in the component folder are deleted during updates. SSL certificate verification when contacting services, recording size and format restrictions, and recognition limits per visitor and per IP address per minute. Keys and tokens are validated for allowed characters before being sent in request headers.
API keys on the settings page are not revealed: the field displays a mask **** and the last 4 characters of the key. Saving with a mask or an empty key field does not change the key.
Component templates updated: the search form is now built using Bootstrap (input-group) instead of a table, with a search button featuring a magnifying glass icon, a microphone button as an accessible button within the field with recording indication, and suggestions in dropdown list style. Without Bootstrap, the form looks the same due to built-in styles.
Search phrase suggestions fixed: the dropdown list appears below the input field, with selection working via arrow keys, Enter, and mouse.
Multiple search forms on the same page no longer interfere with each other (recognized text goes to its own field, errors are displayed for its own form).
When the 'only for authorized users' setting is enabled, the microphone button is not shown to guests.
New settings: recognition language and recording duration. Clicking the microphone again stops recording early.
The event log records the service, HTTP status, and network error (DNS, SSL certificate, timeout) if the request does not reach the service.
The script is initialized via BX.ready and works with a composite site; the jQuery dependency has been removed.
Compatibility with PHP 8.2 - 8.5 while maintaining operation on PHP 7.1+.
Minimum version of the main module is 20.0.0.
If you have copied the alkodesign:search.form or alkodesign:search.suggest.input component templates to the site template, update the template.php, script.js, and style.css files in the copy.