fix: only greet on first message in a session
This commit is contained in:
@@ -26,6 +26,7 @@ logger = logging.getLogger("cs_agent")
|
|||||||
MSG_DEDUP_CAPACITY = 200 # 消息 ID 去重缓存容量
|
MSG_DEDUP_CAPACITY = 200 # 消息 ID 去重缓存容量
|
||||||
TRANSFER_COOLDOWN_SEC = 120 # 转接冷却时间(秒)—— 转接后2分钟内不再调用AI
|
TRANSFER_COOLDOWN_SEC = 120 # 转接冷却时间(秒)—— 转接后2分钟内不再调用AI
|
||||||
DEBOUNCE_SECONDS = 2.0 # 消息防抖延迟(秒)
|
DEBOUNCE_SECONDS = 2.0 # 消息防抖延迟(秒)
|
||||||
|
FIRST_GREETING_IDLE_SEC = 180 # 超过该空闲时间,视为新一轮对话
|
||||||
PENDING_TRANSFER_POLL_SECONDS = 30
|
PENDING_TRANSFER_POLL_SECONDS = 30
|
||||||
PENDING_TRANSFER_RETRY_SECONDS = 60
|
PENDING_TRANSFER_RETRY_SECONDS = 60
|
||||||
TRANSFER_RETRY_WINDOW_SEC = 300
|
TRANSFER_RETRY_WINDOW_SEC = 300
|
||||||
@@ -86,6 +87,7 @@ class SystemOrchestrator:
|
|||||||
self._debounce_tasks: Dict[str, asyncio.Task] = {}
|
self._debounce_tasks: Dict[str, asyncio.Task] = {}
|
||||||
self._pending_messages: Dict[str, List[StandardMessage]] = {}
|
self._pending_messages: Dict[str, List[StandardMessage]] = {}
|
||||||
self._user_locks: Dict[str, asyncio.Lock] = {}
|
self._user_locks: Dict[str, asyncio.Lock] = {}
|
||||||
|
self._last_inbound_seen_time: Dict[str, float] = {}
|
||||||
self._pending_transfer_task: Optional[asyncio.Task] = None
|
self._pending_transfer_task: Optional[asyncio.Task] = None
|
||||||
self._last_retry_transfer_time: Dict[str, float] = {}
|
self._last_retry_transfer_time: Dict[str, float] = {}
|
||||||
self._auto_pipeline_jobs: Dict[str, float] = {}
|
self._auto_pipeline_jobs: Dict[str, float] = {}
|
||||||
@@ -415,7 +417,11 @@ class SystemOrchestrator:
|
|||||||
if std_msg.msg_id in self._processed_msg_ids: return
|
if std_msg.msg_id in self._processed_msg_ids: return
|
||||||
self._processed_msg_ids.append(std_msg.msg_id)
|
self._processed_msg_ids.append(std_msg.msg_id)
|
||||||
|
|
||||||
# 每次收到客户新消息:先立即回一条固定承接,不经过 AI
|
# 同一轮对话只在第一句先发固定承接,不经过 AI
|
||||||
|
now_ts = time.time()
|
||||||
|
last_inbound_ts = self._last_inbound_seen_time.get(session_key, 0.0)
|
||||||
|
self._last_inbound_seen_time[session_key] = now_ts
|
||||||
|
if now_ts - last_inbound_ts >= FIRST_GREETING_IDLE_SEC:
|
||||||
first_greet = StandardResponse(
|
first_greet = StandardResponse(
|
||||||
reply_content="在的 亲",
|
reply_content="在的 亲",
|
||||||
metadata={"acc_id": std_msg.acc_id, "acc_type": std_msg.acc_type},
|
metadata={"acc_id": std_msg.acc_id, "acc_type": std_msg.acc_type},
|
||||||
|
|||||||
Reference in New Issue
Block a user