POST/api/global-chatbot/demo/voice-speak
Преобразует текст в речь (Text-to-Speech) для голосового вывода на странице демо, если эта опция активирована.
`POST /api/global-chatbot/demo/voice-speak` преобразует текст в речь, если голосовая функция для демо активирована. Эндпоинт используется публичной демо-страницей и не предназначен как свободно доступный универсальный API синтеза речи (text-to-speech). Аутентификация в дашборде не требуется; вместо неё действует фиксированная проверка Origin для `https://zentor-app.de` и `https://www.zentor-app.de`. Запрос содержит текст для озвучивания и голосовые параметры, предусмотренные задокументированной схемой. Клиент должен отправлять только тот текст, который действительно должен прозвучать в демо-диалоге. Пустой ввод, недопустимые форматы или неактивированная голосовая функция должны обрабатываться как ошибки. Локальное изменение Origin или вызов с чужого домена не обходит серверную проверку. Операция создаёт аудио и поэтому не должна считаться идемпотентной операцией чистого чтения. Многократная отправка одного и того же текста может запустить несколько процессов обработки. Демо-интерфейс должен отключать кнопку воспроизведения на время обработки и корректно завершать текущее воспроизведение перед запуском нового. Реалистичный сценарий начинается с ответа бота в демо. Пользователь включает озвучивание, страница отправляет текст ответа в `voice-speak`, получает аудиоданные или задокументированный аудиоответ и воспроизводит их в браузере. Если запрос отклонён из-за недопустимого Origin, интерфейс не должен вызывать произвольный сервис-замену, а должен показать голосовую функцию как недоступную. Пароли, токены или конфиденциальное содержимое не должны попадать в запрос. Демо-канал публичный и не предназначен для секретных данных компании. Аудиоответы также не должны надолго сохраняться в публичных логах. Эндпоинт технически отделён от SIP-Voicebot. Телефония работает в изолированных SIP-инстансах для каждого тенанта и активируется исключительно через Master Admin; `voice-speak` не управляет номером телефона и не инициирует звонок. Для доступности демо всегда должно показывать рядом с аудио полный текст. Озвучивание не должно содержать информации, которой нет визуально. Браузеры могут блокировать воспроизведение, пока не произошло взаимодействие пользователя; поэтому запуск должен осознанно инициироваться кликом. Остановка и повторное воспроизведение должны быть контролируемо доступны.
Аутентификация и защита
Аутентификация не требуется
Проверка Origin жёстко задана на https://zentor-app.de / https://www.zentor-app.de (не настраивается, заменяет токен виджета на демо-пути).
Идемпотентный: Да
Параметры
visitor_id(body, string, обязательно)— Должна быть валидной UUIDtext(body, string, обязательно)— Текст для преобразования в речьПример ответа
{"ok":false,"error":{"code":"VOICE_UNAVAILABLE","message":"Функция речи в настоящее время недоступна."}}Коды ошибок
400 INVALID_VISITOR_ID — visitor_id отсутствует или не является корректной UUID.403 ORIGIN_DENIED — Origin запроса — не zentor-app.de.503 VOICE_UNAVAILABLE — Функция речи в настоящее время недоступна.Подтверждение живого теста
Негативные случаи (400 INVALID_VISITOR_ID, 503 VOICE_UNAVAILABLE, каждый с корректным заголовком Origin) проверены вживую. Существует также GET-вариант того же пути (нативный стриминг через <audio src>, идентичное поведение). Демо-аналог widget.voice_speak.