Allow LemonSlice avatars to join third party meeting platforms#6233
Allow LemonSlice avatars to join third party meeting platforms#6233aweitz wants to merge 10 commits into
Conversation
| .with_identity(_MEETING_BROADCAST_IDENTITY) | ||
| .with_name(_MEETING_BROADCAST_IDENTITY) | ||
| .with_grants(grants) | ||
| .with_ttl(timedelta(hours=4)) |
There was a problem hiding this comment.
🚩 Broadcast token has 4-hour TTL without refresh mechanism
The broadcast token minted at avatar.py:189 has a fixed 4-hour TTL (timedelta(hours=4)). If a meeting runs longer than 4 hours, the token expires and the LemonSlice service would lose access to the avatar media in the LiveKit room. There's no refresh mechanism visible in the PR. For most meeting use cases this is acceptable, but it's a hard time limit worth documenting.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
The TTL is only a limit on how quickly it must be used for the avatar to join. Per LiveKit's own documentation, the avatar is not kicked from a room when the token TTL expires:
Expiration time only impacts the initial connection, and not subsequent reconnects.
Adds third-party meeting support (Zoom, Google Meet, Teams, Webex) to the LemonSlice avatar plugin.
AvatarSession.join_meeting()sends the avatar into a meeting via the LemonSlice API; the plugin then connects to a LemonSlice-managed relay WebSocket that streams mixed meeting audio into MeetingAudioInput for STT (bypassing LiveKit room audio). Avatar speech is published back into the meeting through the existing LiveKit avatar path. Optionally, meeting chat messages can be relayed into the agent session as user input (listen_to_meeting_chat).Relevant LemonSlice endpoints are documented here and here
Adds new agent worker script in
examplesto demonstrate usage