From ff47117510626fb7a88cfb54f9b249b2f68f1637 Mon Sep 17 00:00:00 2001 From: Franco Viotti Date: Thu, 29 Jan 2026 08:56:47 -0300 Subject: [PATCH] feat(tts): add Telnyx to /tts provider command --- src/auto-reply/reply/commands-tts.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/auto-reply/reply/commands-tts.ts b/src/auto-reply/reply/commands-tts.ts index 04b60a4e9..aca79d5c9 100644 --- a/src/auto-reply/reply/commands-tts.ts +++ b/src/auto-reply/reply/commands-tts.ts @@ -50,7 +50,8 @@ function ttsUsage(): ReplyPayload { `**Providers:**\n` + `• edge — Free, fast (default)\n` + `• openai — High quality (requires API key)\n` + - `• elevenlabs — Premium voices (requires API key)\n\n` + + `• elevenlabs — Premium voices (requires API key)\n` + + `• telnyx — Great quality, cheaper than ElevenLabs (requires API key)\n\n` + `**Text Limit (default: 1500, max: 4096):**\n` + `When text exceeds the limit:\n` + `• Summary ON: AI summarizes, then generates audio\n` + @@ -151,6 +152,7 @@ export const handleTtsCommands: CommandHandler = async (params, allowTextCommand if (!args.trim()) { const hasOpenAI = Boolean(resolveTtsApiKey(config, "openai")); const hasElevenLabs = Boolean(resolveTtsApiKey(config, "elevenlabs")); + const hasTelnyx = Boolean(resolveTtsApiKey(config, "telnyx")); const hasEdge = isTtsProviderConfigured(config, "edge"); return { shouldContinue: false, @@ -160,18 +162,24 @@ export const handleTtsCommands: CommandHandler = async (params, allowTextCommand `Primary: ${currentProvider}\n` + `OpenAI key: ${hasOpenAI ? "✅" : "❌"}\n` + `ElevenLabs key: ${hasElevenLabs ? "✅" : "❌"}\n` + + `Telnyx key: ${hasTelnyx ? "✅" : "❌"}\n` + `Edge enabled: ${hasEdge ? "✅" : "❌"}\n` + - `Usage: /tts provider openai | elevenlabs | edge`, + `Usage: /tts provider openai | elevenlabs | telnyx | edge`, }, }; } const requested = args.trim().toLowerCase(); - if (requested !== "openai" && requested !== "elevenlabs" && requested !== "edge") { + if ( + requested !== "openai" && + requested !== "elevenlabs" && + requested !== "telnyx" && + requested !== "edge" + ) { return { shouldContinue: false, reply: ttsUsage() }; } - setTtsProvider(prefsPath, requested); + setTtsProvider(prefsPath, requested as "openai" | "elevenlabs" | "telnyx" | "edge"); return { shouldContinue: false, reply: { text: `✅ TTS provider set to ${requested}.` },