Просмотр исходного кода

fix(auto_put_ad_mini): 实现飞书群聊@检测 + 启用项目群聊

- 启用投放项目群聊(oc_7940...)接收审批回复
- 群聊消息需 @ 机器人才会被识别(个人聊天无需@)
- feishu_client.py 补充 mentions 字段返回(框架补丁)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
刘立冬 2 недель назад
Родитель
Сommit
ff4495e6cc

+ 1 - 0
agent/tools/builtin/feishu/feishu_client.py

@@ -629,6 +629,7 @@ class FeishuClient:
                     "content": content,
                     "content": content,
                     "content_type": item.msg_type,
                     "content_type": item.msg_type,
                     "create_time": item.create_time,
                     "create_time": item.create_time,
+                    "mentions": item.mentions if hasattr(item, 'mentions') else [],
                 })
                 })
 
 
         return {
         return {

+ 1 - 1
examples/auto_put_ad_mini/config.py

@@ -181,7 +181,7 @@ FEISHU_OPERATOR_CHAT_ID = os.getenv("FEISHU_OPERATOR_CHAT_ID", "oc_88e0a1970a7de
 
 
 # 投放项目群聊 — 用于接收决策结果通知和审批回复
 # 投放项目群聊 — 用于接收决策结果通知和审批回复
 # 置空则不发送到群,仅发送到个人
 # 置空则不发送到群,仅发送到个人
-FEISHU_AD_PROJECT_CHAT_ID = os.getenv("FEISHU_AD_PROJECT_CHAT_ID", "")
+FEISHU_AD_PROJECT_CHAT_ID = os.getenv("FEISHU_AD_PROJECT_CHAT_ID", "oc_7940ec97cde40b245cff9cb606ff1ac7")
 
 
 # 腾讯广告默认账户(测试账户)
 # 腾讯广告默认账户(测试账户)
 TENCENT_AD_ACCOUNT_ID = int(os.getenv("TENCENT_AD_ACCOUNT_ID", "80769799"))
 TENCENT_AD_ACCOUNT_ID = int(os.getenv("TENCENT_AD_ACCOUNT_ID", "80769799"))

+ 11 - 0
examples/auto_put_ad_mini/tools/im_approval.py

@@ -796,6 +796,17 @@ async def send_approval_request(
                             sender_type = msg.get("sender_type", "")
                             sender_type = msg.get("sender_type", "")
                             if sender_type != "user":
                             if sender_type != "user":
                                 continue
                                 continue
+
+                            # 群聊消息需检查 @(个人聊天跳过)
+                            is_group_chat = chat_id.startswith("oc_") and chat_id != FEISHU_OPERATOR_CHAT_ID
+                            if is_group_chat:
+                                mentions = msg.get("mentions", [])
+                                # 检查是否 @ 了机器人
+                                mentioned_bot = _feishu._check_bot_mentioned(mentions) if mentions else False
+                                if not mentioned_bot:
+                                    logger.debug("群聊消息未 @ 机器人,跳过: %s", msg.get("message_id"))
+                                    continue
+
                             text = msg.get("content", "")
                             text = msg.get("content", "")
                             if not text.strip():
                             if not text.strip():
                                 continue
                                 continue