diff --git a/bot.py b/bot.py index dd01766..c0610d9 100644 --- a/bot.py +++ b/bot.py @@ -97,22 +97,9 @@ class Bot: async def on_invite(self, room, event: InviteMemberEvent): if event.state_key != BOT_USER: return - logger.info("Invited to %s", room.room_id) + logger.info("Invited to %s, joining room", room.room_id) await self.client.join(room.room_id) - lk_room_name = room.room_id - try: - await self.lkapi.agent_dispatch.create_dispatch( - api.CreateAgentDispatchRequest( - agent_name=AGENT_NAME, - room=lk_room_name, - ) - ) - self.dispatched_rooms.add(room.room_id) - logger.info("Agent dispatched to %s", lk_room_name) - except Exception: - logger.exception("Dispatch failed for %s", room.room_id) - async def on_sync(self, response: SyncResponse): """After each sync, trust all devices in our rooms.""" for user_id in list(self.client.device_store.users): @@ -145,6 +132,27 @@ class Bot: "livekit_alias": room_id, }]) + # Extract LiveKit room name from foci and dispatch agent + lk_room_name = room_id # fallback + for f in foci: + if f.get("type") == "livekit" and f.get("livekit_alias"): + lk_room_name = f["livekit_alias"] + break + logger.info("LiveKit room name: %s (from foci_preferred)", lk_room_name) + + if room_id not in self.dispatched_rooms: + try: + await self.lkapi.agent_dispatch.create_dispatch( + api.CreateAgentDispatchRequest( + agent_name=AGENT_NAME, + room=lk_room_name, + ) + ) + self.dispatched_rooms.add(room_id) + logger.info("Agent dispatched to LiveKit room %s", lk_room_name) + except Exception: + logger.exception("Dispatch failed for %s", lk_room_name) + # Send our own call member state event call_content = { "application": "m.call", diff --git a/docker-compose.yml b/docker-compose.yml index 9c33884..ab743a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ services: agent: build: . - command: python agent.py start + command: python agent.py start --agent-name matrix-ai env_file: .env restart: unless-stopped network_mode: host