

























@@ -335,6 +335,7 @@ describe("TwilioProvider", () => {
335335336336provider.setMediaStreamHandler(mediaStreamHandler as never);
337337provider.setTTSProvider({
338+synthesisTimeoutMs: 5000,
338339synthesizeForTelephony: async () => await new Promise<Buffer>(() => {}),
339340});
340341@@ -344,8 +345,8 @@ describe("TwilioProvider", () => {
344345providerCallId: "CA-timeout",
345346text: "Timeout me",
346347}),
347-).rejects.toThrow("Telephony TTS synthesis timed out");
348-await vi.advanceTimersByTimeAsync(8_100);
348+).rejects.toThrow("Telephony TTS synthesis timed out after 5000ms");
349+await vi.advanceTimersByTimeAsync(5_100);
349350await playExpectation;
350351expect(sendAudio).toHaveBeenCalled();
351352expect(sendMark).not.toHaveBeenCalled();
@@ -373,6 +374,7 @@ describe("TwilioProvider", () => {
373374374375provider.setMediaStreamHandler(mediaStreamHandler as never);
375376provider.setTTSProvider({
377+synthesisTimeoutMs: 5000,
376378synthesizeForTelephony: async () => Buffer.alloc(320),
377379});
378380@@ -386,4 +388,38 @@ describe("TwilioProvider", () => {
386388expect(sendAudio).toHaveBeenCalled();
387389expect(sendMark).toHaveBeenCalledTimes(1);
388390});
391+392+it("fails stream playback when telephony synthesis returns empty audio", async () => {
393+const provider = createProvider();
394+provider.registerCallStream("CA-empty", "MZ-empty");
395+396+const sendAudio = vi.fn();
397+const sendMark = vi.fn();
398+const mediaStreamHandler = {
399+queueTts: async (
400+_streamSid: string,
401+playFn: (signal: AbortSignal) => Promise<void>,
402+): Promise<void> => {
403+await playFn(new AbortController().signal);
404+},
405+ sendAudio,
406+ sendMark,
407+};
408+409+provider.setMediaStreamHandler(mediaStreamHandler as never);
410+provider.setTTSProvider({
411+synthesisTimeoutMs: 5000,
412+synthesizeForTelephony: async () => Buffer.alloc(0),
413+});
414+415+await expect(
416+provider.playTts({
417+callId: "call-empty",
418+providerCallId: "CA-empty",
419+text: "Empty audio",
420+}),
421+).rejects.toThrow("Telephony TTS produced no audio");
422+expect(sendAudio).toHaveBeenCalled();
423+expect(sendMark).not.toHaveBeenCalled();
424+});
389425});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。