fix(audio): handle voice message failures gracefully

- Send user feedback when voice/audio download fails instead of silent failure
- Send graceful message when audio transcription is not configured instead of empty text which crashes API
This commit is contained in:
William Valentin
2026-02-11 19:44:42 -08:00
parent 5c531a760d
commit 2e235213d9
2 changed files with 5 additions and 0 deletions
+2
View File
@@ -300,6 +300,7 @@ export class TelegramAdapter implements ChannelAdapter {
const fileData = await this.downloadFileToBase64(voice.file_id);
if (!fileData) {
console.error(`Failed to download voice message ${voice.file_id}`);
await ctx.reply('Sorry, I couldn\'t download your voice message. Please try again.', { reply_parameters: { message_id: ctx.message.message_id } });
return;
}
@@ -337,6 +338,7 @@ export class TelegramAdapter implements ChannelAdapter {
const fileData = await this.downloadFileToBase64(audio.file_id);
if (!fileData) {
console.error(`Failed to download audio message ${audio.file_id}`);
await ctx.reply('Sorry, I couldn\'t download your audio file. Please try again.', { reply_parameters: { message_id: ctx.message.message_id } });
return;
}
+3
View File
@@ -254,6 +254,9 @@ export function createMessageRouter(deps: {
const transcript = await transcribeAudio(att, audioConfig);
messageText = `[Voice message]: ${transcript}\n\n${messageText}`;
}
} else {
// No transcription endpoint configured — inform the user gracefully
messageText = `[Voice message received but audio transcription is not configured. Please configure the audio section in config.yaml to enable voice message support.]`;
}
// Remove audio attachments so buildUserMessage doesn't create audio content parts
attachments = (msg.attachments ?? []).filter((a: Attachment) => !isSupportedAudio(a));