ForcePilot/backend/package/yuxi/channels/adapters/wechat/session.py

37 lines
1.2 KiB
Python
Raw Normal View History

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