37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
|
|
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
|