from __future__ import annotations from yuxi.channels.models import ChannelMessage, ChatType def build_session_route( message: ChannelMessage, default_agent_id: str = "1", ) -> str: identity = message.identity mode = message.metadata.get("wechat_mode", "personal") chat_type = message.metadata.get("chat_type", "direct") if chat_type == "group": route = f"agent:{default_agent_id}:wechat:{mode}:group:{identity.channel_chat_id}" else: route = f"agent:{default_agent_id}:wechat:{mode}:direct:{identity.channel_user_id}" return route def get_session_metadata(message: ChannelMessage) -> dict: return { "channel_id": message.identity.channel_id, "chat_type": message.metadata.get("chat_type", "direct"), "wechat_mode": message.metadata.get("wechat_mode", "personal"), "channel_user_id": message.identity.channel_user_id, "channel_chat_id": message.identity.channel_chat_id, } def resolve_chat_type(message: ChannelMessage) -> ChatType: chat_type_str = message.metadata.get("chat_type", "direct") if chat_type_str == "group": return ChatType.GROUP return ChatType.DIRECT