From ff71b12ca0abfa5d36fdfd56839be18b8b783ede Mon Sep 17 00:00:00 2001 From: "openclaw-docs-sync[bot]" Date: Sun, 26 Apr 2026 07:13:04 +0000 Subject: [PATCH] chore(sync): mirror docs from openclaw/openclaw@d419fb561d439fc0a67fc07278a22afb64d04c5d --- .openclaw-sync/source.json | 4 ++-- docs/channels/feishu.md | 10 ++++++++++ docs/channels/qqbot.md | 19 +++++++++++++++---- docs/tools/tts.md | 37 +++++++++++++++++++++++++++++++++++-- 4 files changed, 62 insertions(+), 8 deletions(-) diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 5cab2b427..9b2a03fa2 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "6c60cd2b723c841bdb806ad2414b599366edfcef", - "syncedAt": "2026-04-26T07:09:16.278Z" + "sha": "d419fb561d439fc0a67fc07278a22afb64d04c5d", + "syncedAt": "2026-04-26T07:11:38.143Z" } diff --git a/docs/channels/feishu.md b/docs/channels/feishu.md index c3ba93b34..e61585349 100644 --- a/docs/channels/feishu.md +++ b/docs/channels/feishu.md @@ -213,6 +213,11 @@ openclaw pairing list feishu appId: "cli_xxx", appSecret: "xxx", name: "Primary bot", + tts: { + providers: { + openai: { voice: "shimmer" }, + }, + }, }, backup: { appId: "cli_yyy", @@ -227,6 +232,10 @@ openclaw pairing list feishu ``` `defaultAccount` controls which account is used when outbound APIs do not specify an `accountId`. +`accounts..tts` uses the same shape as `messages.tts` and deep-merges over +global TTS config, so multi-bot Feishu setups can keep shared provider +credentials globally while overriding only voice, model, persona, or auto mode +per account. ### Message limits @@ -386,6 +395,7 @@ Full configuration: [Gateway configuration](/gateway/configuration) | `channels.feishu.accounts..appId` | App ID | — | | `channels.feishu.accounts..appSecret` | App Secret | — | | `channels.feishu.accounts..domain` | Per-account domain override | `feishu` | +| `channels.feishu.accounts..tts` | Per-account TTS override | `messages.tts` | | `channels.feishu.dmPolicy` | DM policy | `allowlist` | | `channels.feishu.allowFrom` | DM allowlist (open_id list) | [BotOwnerId] | | `channels.feishu.groupPolicy` | Group policy | `allowlist` | diff --git a/docs/channels/qqbot.md b/docs/channels/qqbot.md index e8b0ca42e..c98c527c8 100644 --- a/docs/channels/qqbot.md +++ b/docs/channels/qqbot.md @@ -122,10 +122,10 @@ openclaw channels add --channel qqbot --account bot2 --token "222222222:secret-o STT and TTS support two-level configuration with priority fallback: -| Setting | Plugin-specific | Framework fallback | -| ------- | -------------------- | ----------------------------- | -| STT | `channels.qqbot.stt` | `tools.media.audio.models[0]` | -| TTS | `channels.qqbot.tts` | `messages.tts` | +| Setting | Plugin-specific | Framework fallback | +| ------- | -------------------------------------------------------- | ----------------------------- | +| STT | `channels.qqbot.stt` | `tools.media.audio.models[0]` | +| TTS | `channels.qqbot.tts`, `channels.qqbot.accounts..tts` | `messages.tts` | ```json5 { @@ -140,12 +140,23 @@ STT and TTS support two-level configuration with priority fallback: model: "your-tts-model", voice: "your-voice", }, + accounts: { + qq-main: { + tts: { + providers: { + openai: { voice: "shimmer" }, + }, + }, + }, + }, }, }, } ``` Set `enabled: false` on either to disable. +Account-level TTS overrides use the same shape as `messages.tts` and deep-merge +over the channel/global TTS config. Inbound QQ voice attachments are exposed to agents as audio media metadata while keeping raw voice files out of generic `MediaPaths`. `[[audio_as_voice]]` plain diff --git a/docs/tools/tts.md b/docs/tools/tts.md index c84b328aa..305541ecd 100644 --- a/docs/tools/tts.md +++ b/docs/tools/tts.md @@ -403,8 +403,41 @@ Precedence order for automatic replies, `/tts audio`, `/tts status`, and the 1. `messages.tts` 2. active `agents.list[].tts` -3. local `/tts` preferences for this host -4. inline `[[tts:...]]` directives when [model overrides](#model-driven-directives) are enabled +3. channel override, when the channel supports `channels..tts` +4. account override, when the channel passes `channels..accounts..tts` +5. local `/tts` preferences for this host +6. inline `[[tts:...]]` directives when [model overrides](#model-driven-directives) are enabled + +Channel and account overrides use the same shape as `messages.tts` and +deep-merge over the earlier layers, so shared provider credentials can stay in +`messages.tts` while a channel or bot account changes only voice, model, persona, +or auto mode: + +```json5 +{ + messages: { + tts: { + provider: "openai", + providers: { + openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, + }, + }, + }, + channels: { + feishu: { + accounts: { + english: { + tts: { + providers: { + openai: { voice: "shimmer" }, + }, + }, + }, + }, + }, + }, +} +``` ## Personas