examples: use EndFrame() when the participant leaves

This commit is contained in:
Aleix Conchillo Flaqué
2024-10-18 10:27:53 -07:00
parent 020f371ecb
commit 4550545528
4 changed files with 21 additions and 12 deletions

View File

@@ -47,10 +47,15 @@ async def main():
# Register an event handler so we can play the audio when the # Register an event handler so we can play the audio when the
# participant joins. # participant joins.
@transport.event_handler("on_participant_joined") @transport.event_handler("on_first_participant_joined")
async def on_new_participant_joined(transport, participant): async def on_first_participant_joined(transport, participant):
participant_name = participant["info"]["userName"] or "" participant_name = participant.get("info", {}).get("userName", "")
await task.queue_frames([TextFrame(f"Hello there, {participant_name}!"), EndFrame()]) await task.queue_frame(TextFrame(f"Hello there, {participant_name}!"))
# Register an event handler to exit the application when the user leaves.
@transport.event_handler("on_participant_left")
async def on_participant_left(transport, participant, reason):
await task.queue_frame(EndFrame())
await runner.run(task) await runner.run(task)

View File

@@ -57,7 +57,11 @@ async def main():
@transport.event_handler("on_first_participant_joined") @transport.event_handler("on_first_participant_joined")
async def on_first_participant_joined(transport, participant): async def on_first_participant_joined(transport, participant):
await task.queue_frames([LLMMessagesFrame(messages), EndFrame()]) await task.queue_frame(LLMMessagesFrame(messages))
@transport.event_handler("on_participant_left")
async def on_participant_left(transport, participant, reason):
await task.queue_frame(EndFrame())
await runner.run(task) await runner.run(task)

View File

@@ -9,7 +9,7 @@ import aiohttp
import os import os
import sys import sys
from pipecat.frames.frames import TextFrame from pipecat.frames.frames import EndFrame, TextFrame
from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.runner import PipelineRunner from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineTask from pipecat.pipeline.task import PipelineTask
@@ -51,11 +51,11 @@ async def main():
@transport.event_handler("on_first_participant_joined") @transport.event_handler("on_first_participant_joined")
async def on_first_participant_joined(transport, participant): async def on_first_participant_joined(transport, participant):
# Note that we do not put an EndFrame() item in the pipeline for this demo. await task.queue_frame(TextFrame("a cat in the style of picasso"))
# This means that the bot will stay in the channel until it times out.
# An EndFrame() in the pipeline would cause the transport to shut @transport.event_handler("on_participant_left")
# down. async def on_participant_left(transport, participant, reason):
await task.queue_frames([TextFrame("a cat in the style of picasso")]) await task.queue_frame(EndFrame())
await runner.run(task) await runner.run(task)

View File

@@ -129,7 +129,7 @@ async def main():
@transport.event_handler("on_first_participant_joined") @transport.event_handler("on_first_participant_joined")
async def on_first_participant_joined(transport, participant): async def on_first_participant_joined(transport, participant):
participant_name = participant["info"]["userName"] or "" participant_name = participant.get("info", {}).get("userName", "")
transport.capture_participant_transcription(participant["id"]) transport.capture_participant_transcription(participant["id"])
await task.queue_frames([TextFrame(f"Hi there {participant_name}!")]) await task.queue_frames([TextFrame(f"Hi there {participant_name}!")])