mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-22 08:38:13 +02:00
fix: resample telephony audio for openai realtime
This commit is contained in:
parent
3ddb66e2f7
commit
d37d6d05c1
3 changed files with 157 additions and 1 deletions
59
api/tests/test_realtime_message_append.py
Normal file
59
api/tests/test_realtime_message_append.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
from types import SimpleNamespace
|
||||
from unittest.mock import AsyncMock
|
||||
|
||||
import pytest
|
||||
from pipecat.frames.frames import LLMMessagesAppendFrame
|
||||
from pipecat.services.openai.realtime import events
|
||||
|
||||
from api.services.pipecat.realtime.openai_realtime import (
|
||||
DograhOpenAIRealtimeLLMService,
|
||||
)
|
||||
from api.services.workflow.pipecat_engine_callbacks import UserIdleHandler
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_openai_realtime_messages_append_frame_sends_conversation_item():
|
||||
service = DograhOpenAIRealtimeLLMService(api_key="test")
|
||||
service._api_session_ready = True
|
||||
service.send_client_event = AsyncMock()
|
||||
service._send_manual_response_create = AsyncMock()
|
||||
|
||||
await service._handle_messages_append(
|
||||
LLMMessagesAppendFrame(
|
||||
[{"role": "user", "content": "Are you still there?"}],
|
||||
run_llm=True,
|
||||
)
|
||||
)
|
||||
|
||||
service.send_client_event.assert_awaited_once()
|
||||
event = service.send_client_event.await_args.args[0]
|
||||
assert isinstance(event, events.ConversationItemCreateEvent)
|
||||
assert event.item.role == "user"
|
||||
assert event.item.type == "message"
|
||||
assert event.item.content == [
|
||||
events.ItemContent(type="input_text", text="Are you still there?")
|
||||
]
|
||||
service._send_manual_response_create.assert_awaited_once()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_user_idle_handler_uses_realtime_append_path():
|
||||
engine = SimpleNamespace(
|
||||
llm=SimpleNamespace(),
|
||||
end_call_with_reason=AsyncMock(),
|
||||
)
|
||||
aggregator = SimpleNamespace(push_frame=AsyncMock())
|
||||
handler = UserIdleHandler(engine)
|
||||
|
||||
await handler.handle_idle(aggregator)
|
||||
|
||||
aggregator.push_frame.assert_awaited_once()
|
||||
frame = aggregator.push_frame.await_args.args[0]
|
||||
assert isinstance(frame, LLMMessagesAppendFrame)
|
||||
assert frame.run_llm is True
|
||||
assert frame.messages == [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "The user has been quiet. Politely and briefly ask if they're still there in the language that the user has been speaking so far.",
|
||||
}
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue