diff --git a/extensions/telegram/src/outbound-adapter.test.ts b/extensions/telegram/src/outbound-adapter.test.ts index 0641b2129fd..c9649000349 100644 --- a/extensions/telegram/src/outbound-adapter.test.ts +++ b/extensions/telegram/src/outbound-adapter.test.ts @@ -98,6 +98,32 @@ describe("telegramOutbound", () => { expect(result).toEqual({ channel: "telegram", messageId: "tg-2", chatId: "12345" }); }); + it("forwards audioAsVoice payload media to Telegram voice sends", async () => { + sendMessageTelegramMock.mockResolvedValueOnce({ messageId: "tg-voice", chatId: "12345" }); + + const result = await telegramOutbound.sendPayload!({ + cfg: {} as never, + to: "12345", + text: "", + payload: { + text: "voice caption", + mediaUrl: "file:///tmp/note.ogg", + audioAsVoice: true, + }, + deps: { sendTelegram: sendMessageTelegramMock }, + }); + + expect(sendMessageTelegramMock).toHaveBeenCalledWith( + "12345", + "voice caption", + expect.objectContaining({ + mediaUrl: "file:///tmp/note.ogg", + asVoice: true, + }), + ); + expect(result).toEqual({ channel: "telegram", messageId: "tg-voice", chatId: "12345" }); + }); + it("passes delivery pin notify requests to Telegram pinning", async () => { pinMessageTelegramMock.mockResolvedValueOnce({ ok: true, messageId: "tg-1", chatId: "12345" }); diff --git a/extensions/telegram/src/outbound-adapter.ts b/extensions/telegram/src/outbound-adapter.ts index 03e32a888b7..167ee0488b0 100644 --- a/extensions/telegram/src/outbound-adapter.ts +++ b/extensions/telegram/src/outbound-adapter.ts @@ -96,6 +96,7 @@ export async function sendTelegramPayloadMessages(params: { const payloadOpts = { ...params.baseOpts, quoteText, + ...(params.payload.audioAsVoice === true ? { asVoice: true } : {}), }; // Telegram allows reply_markup on media; attach buttons only to the first send.