fix context order when using interruption strategies

This commit is contained in:
Aleix Conchillo Flaqué
2025-10-06 14:58:47 -07:00
parent 2576d0f340
commit de8ee96927
7 changed files with 59 additions and 15 deletions

View File

@@ -5,6 +5,7 @@
#
import json
import sys
import unittest
from typing import Any
@@ -20,6 +21,7 @@ from pipecat.frames.frames import (
FunctionCallResultFrame,
FunctionCallResultProperties,
InterimTranscriptionFrame,
InterruptionCompletedFrame,
InterruptionFrame,
InterruptionTaskFrame,
LLMFullResponseEndFrame,
@@ -568,6 +570,7 @@ class BaseTestUserContextAggregator:
BotStartedSpeakingFrame,
UserStartedSpeakingFrame,
InterruptionFrame,
InterruptionCompletedFrame,
UserStoppedSpeakingFrame,
*self.EXPECTED_CONTEXT_FRAMES,
]

View File

@@ -10,6 +10,7 @@ from pipecat.audio.dtmf.types import KeypadEntry
from pipecat.frames.frames import (
EndFrame,
InputDTMFFrame,
InterruptionCompletedFrame,
InterruptionFrame,
TranscriptionFrame,
)
@@ -30,6 +31,7 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase):
expected_down_frames = [
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
InputDTMFFrame,
InputDTMFFrame,
InputDTMFFrame,
@@ -62,10 +64,12 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase):
expected_down_frames = [
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
InputDTMFFrame,
TranscriptionFrame, # First aggregation "12"
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
TranscriptionFrame, # Second aggregation "3"
]
@@ -98,11 +102,13 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase):
expected_down_frames = [
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
InputDTMFFrame,
InputDTMFFrame,
TranscriptionFrame, # "12#"
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
InputDTMFFrame,
TranscriptionFrame, # "45"
]
@@ -132,6 +138,7 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase):
expected_down_frames = [
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
InputDTMFFrame,
TranscriptionFrame, # Should flush before EndFrame
EndFrame,
@@ -160,6 +167,7 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase):
expected_down_frames = [
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
InputDTMFFrame,
TranscriptionFrame,
]
@@ -187,6 +195,7 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase):
expected_down_frames = [
InputDTMFFrame,
InterruptionFrame,
InterruptionCompletedFrame,
InputDTMFFrame,
InputDTMFFrame,
TranscriptionFrame,
@@ -224,7 +233,7 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase):
# All the InputDTMFFrames plus one TranscriptionFrame
expected_down_frames = (
[InputDTMFFrame, InterruptionFrame]
[InputDTMFFrame, InterruptionFrame, InterruptionCompletedFrame]
+ [InputDTMFFrame] * (len(frames_to_send) - 1)
+ [TranscriptionFrame]
)

View File

@@ -10,6 +10,7 @@ import unittest
from pipecat.frames.frames import (
EndFrame,
Frame,
InterruptionCompletedFrame,
InterruptionFrame,
OutputTransportMessageUrgentFrame,
TextFrame,
@@ -101,6 +102,7 @@ class TestFrameProcessor(unittest.IsolatedAsyncioTestCase):
expected_down_frames = [
InterruptionFrame,
InterruptionFrame,
InterruptionCompletedFrame,
OutputTransportMessageUrgentFrame,
EndFrame,
]