#Auto-TTS works for system messages but not agent responses (Telegram)

1 messages · Page 1 of 1 (latest)

hidden plinth
#

TTS works perfectly for system messages (/tts status plays as voice), but agent responses always come through as text only, even with auto: always. The /tts status shows successful generation (188 chars, elevenlabs, ✅) but that's just the status message itself — my agent's actual conversational responses never trigger TTS. Is there a setting to enable TTS specifically for agent/conversational responses?

cedar yarrowBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

rustic quail
#

u can find a solution bro?

orchid canyonBOT
# rustic quail u can find a solution bro?

If /tts status (or /tts audio ...) produces a Telegram voice message, then audio sending + your provider key are fine. When only command/system replies get voiced but normal “agent chat” replies never do, the usual culprit is:

1) Your agent replies are being sent as block replies (block streaming) → TTS ignores them by default

Auto‑TTS has a mode gate:

  • messages.tts.mode: "final" (default) → only the single final answer gets TTS
  • messages.tts.mode: "all" → includes tool/block replies too

So if your Telegram output is configured to send agent responses as multiple “blocks” (instead of one final message), TTS won’t trigger unless you switch to "all".

Fix options:

Option A (simple): enable TTS for block replies

{
  messages: {
#
    tts: {
      auto: "always",
      mode: "all"
    }
  }
}

Docs: https://docs.openclaw.ai/tts (see mode: final | all)

Option B (preferred if you don’t want every block voiced): disable block streaming for Telegram

In Telegram channel config, block streaming is off by default, but if you turned it on, turn it back off:

{
  channels: {
    telegram: {
#
      blockStreaming: false
    }
  }
}

Docs (Telegram streaming vs block streaming note): https://docs.openclaw.ai/channels/telegram

2) Quick checks if it still doesn’t work

  • In the same Telegram chat, run /tts status and confirm it shows auto = always (not inbound or tagged).
  • Tail logs while sending a normal message and look for “tts skipped …” reasons:
    openclaw logs --follow
    
  • Also: what version are you on?