30 lines
1.4 KiB
Python
30 lines
1.4 KiB
Python
from pydantic import BaseModel, Field
|
||
from typing import List, Optional, Any
|
||
from datetime import datetime
|
||
|
||
class StandardMessage(BaseModel):
|
||
"""全平台通用的输入消息协议"""
|
||
platform: str = "qianniu" # 来源平台:qianniu, wechat, feishu, console
|
||
msg_id: str # 消息唯一ID
|
||
user_id: str # 发送者唯一ID
|
||
user_name: str = "" # 发送者昵称
|
||
content: str # 消息文本内容
|
||
image_urls: List[str] = [] # 提取出来的图片链接
|
||
acc_id: str = "" # 商家/店铺账号ID
|
||
acc_type: str = "" # 平台类型标识
|
||
timestamp: datetime = Field(default_factory=datetime.now)
|
||
raw_data: Any = None # 原始消息体(仅供调试或特殊逻辑备查)
|
||
|
||
# 扩展字段:针对电商场景
|
||
goods_name: Optional[str] = None
|
||
goods_order: Optional[str] = None
|
||
|
||
class StandardResponse(BaseModel):
|
||
"""大脑给出的通用回复协议"""
|
||
reply_content: str # 回复文本或图片URL
|
||
msg_type: int = 0 # 0: 文本, 1: 图片, 2: 撤回, 9: 转人工
|
||
should_reply: bool = True # 是否需要发送
|
||
need_transfer: bool = False # 是否触发转人工
|
||
transfer_group: str = "" # 转人工的分组ID
|
||
metadata: dict = {} # 额外元数据(如埋点、调试信息)
|