POST/api/global-chatbot/demo/voice-speak
デモページでの音声出力のために、テキストを音声に変換します(Text-to-Speech)。有効化されている場合のみ適用されます。
`POST /api/global-chatbot/demo/voice-speak` は、デモ用の音声機能が有効な場合にテキストを音声へ変換します。このエンドポイントは公開デモページで使用されるもので、自由に利用できる汎用 Text-to-Speech API として提供されているわけではありません。Dashboard 認証は不要ですが、`https://zentor-app.de` と `https://www.zentor-app.de` に対する固定の Origin チェックが適用されます。 Request には読み上げるテキストと、ドキュメント化された schema で定義された言語オプションを含めます。Client は実際にデモ会話で読み上げるテキストだけを送信してください。空の入力、不正な形式、または音声機能が有効になっていない場合はエラーとして処理する必要があります。Origin をローカルで変更したり、別の domain から呼び出したりしても、server-side のチェックを回避することはできません。 この operation は音声を生成するため、idempotent な読み取り専用 operation として扱うべきではありません。同じテキストを複数回送信すると、複数の処理が実行される可能性があります。デモ UI は処理中に出力ボタンを無効にし、新しい再生を開始する前に進行中の再生を適切に終了する必要があります。 実際の流れは、デモ内で bot が回答するところから始まります。ユーザーが音声出力を有効にすると、ページは回答テキストを `voice-speak` に送り、音声データまたはドキュメント化された音声 response を受け取り、browser で再生します。許可されていない Origin が原因で request が失敗した場合、UI は任意の代替サービスを呼び出してはならず、音声機能を利用不可として表示する必要があります。 Passwords、tokens、機密情報を Request に含めてはいけません。Demo channel は公開されており、機密性の高い企業データ向けではありません。Audio responses も公開 log に恒久的に保存すべきではありません。このエンドポイントは技術的に SIP voicebot とは分離されています。Telephony は tenant ごとに分離された SIP instance で動作し、Master Admin のみが有効化できます。`voice-speak` は電話番号を制御せず、電話発信も開始しません。 アクセシビリティのため、デモでは音声出力と同時に常に完全なテキストも表示する必要があります。音声出力に、画面上に存在しない情報を含めてはいけません。Browser はユーザー操作がない場合に再生をブロックすることがあるため、開始は意図的なクリックで実行する必要があります。停止と再生のやり直しを制御された形で行えるようにしてください。
Auth & Absicherung
Keine Authentifizierung erforderlich
Origin-Pruefungはhttps://zentor-app.de / https://www.zentor-app.deに固定されています(設定不可、デモパスにおけるWidgetトークンの代替)。
Idempotent: Ja
Parameter
visitor_id(body, string, erforderlich)— 有効なUUIDである必要がありますtext(body, string, erforderlich)— 変換対象のテキストBeispiel-Response
{"ok":false,"error":{"code":"VOICE_UNAVAILABLE","message":"音声機能は現在利用できません。"}}Fehlercodes
400 INVALID_VISITOR_ID — visitor_id が不足しているか、有効な UUID ではありません。403 ORIGIN_DENIED — リクエストのOriginはzentor-app.deではありません。503 VOICE_UNAVAILABLE — 言語機能は現在利用できません。Live-Test-Nachweis
ネガティブケース(400 INVALID_VISITOR_ID、503 VOICE_UNAVAILABLE、それぞれ正しいOriginヘッダー付き)をライブで検証済み。同じパスのGETバリエーションも存在(ネイティブの<audio src>ストリーミング、同一の動作)。widget.voice_speakのデモ版。