
























@@ -2,14 +2,21 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
22import { transcribeFirstAudio } from "./audio-preflight.js";
3344const runAudioTranscriptionMock = vi.hoisted(() => vi.fn());
5+const sendTranscriptEchoMock = vi.hoisted(() => vi.fn());
5667vi.mock("./audio-transcription-runner.js", () => ({
78runAudioTranscription: (...args: unknown[]) => runAudioTranscriptionMock(...args),
89}));
91011+vi.mock("./echo-transcript.js", () => ({
12+DEFAULT_ECHO_TRANSCRIPT_FORMAT: '📝 "{transcript}"',
13+sendTranscriptEcho: (...args: unknown[]) => sendTranscriptEchoMock(...args),
14+}));
15+1016describe("transcribeFirstAudio", () => {
1117beforeEach(() => {
1218runAudioTranscriptionMock.mockReset();
19+sendTranscriptEchoMock.mockReset();
1320});
14211522it("runs audio preflight in auto mode when audio config is absent", async () => {
@@ -29,6 +36,7 @@ describe("transcribeFirstAudio", () => {
29363037expect(transcript).toBe("voice note transcript");
3138expect(runAudioTranscriptionMock).toHaveBeenCalledTimes(1);
39+expect(sendTranscriptEchoMock).not.toHaveBeenCalled();
3240});
33413442it("skips audio preflight when audio config is explicitly disabled", async () => {
@@ -51,5 +59,44 @@ describe("transcribeFirstAudio", () => {
51595260expect(transcript).toBeUndefined();
5361expect(runAudioTranscriptionMock).not.toHaveBeenCalled();
62+expect(sendTranscriptEchoMock).not.toHaveBeenCalled();
63+});
64+65+it("echoes the preflight transcript when echoTranscript is enabled", async () => {
66+runAudioTranscriptionMock.mockResolvedValueOnce({
67+transcript: "hello from dm audio",
68+attachments: [],
69+});
70+71+const ctx = {
72+Body: "<media:audio>",
73+Provider: "telegram",
74+OriginatingTo: "telegram:42",
75+AccountId: "default",
76+MediaPath: "/tmp/voice.ogg",
77+MediaType: "audio/ogg",
78+};
79+const cfg = {
80+tools: {
81+media: {
82+audio: {
83+enabled: true,
84+echoTranscript: true,
85+echoFormat: "Heard: {transcript}",
86+},
87+},
88+},
89+};
90+91+const transcript = await transcribeFirstAudio({ ctx, cfg });
92+93+expect(transcript).toBe("hello from dm audio");
94+expect(sendTranscriptEchoMock).toHaveBeenCalledOnce();
95+expect(sendTranscriptEchoMock).toHaveBeenCalledWith({
96+ ctx,
97+ cfg,
98+transcript: "hello from dm audio",
99+format: "Heard: {transcript}",
100+});
54101});
55102});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。