Files
aiagents-stock/Webhook自定义关键词功能说明.md
T
2025-10-15 08:30:13 +08:00

6.0 KiB
Raw Blame History

Webhook自定义关键词功能说明

功能概述

系统现已支持自定义Webhook关键词配置,用户可以根据自己的钉钉/飞书机器人安全设置灵活配置关键词。

配置方法

1. 在.env文件中配置

# ========== Webhook通知配置(可选)==========
WEBHOOK_ENABLED="true"
WEBHOOK_TYPE="dingtalk"
WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
WEBHOOK_KEYWORD="aiagents通知"

2. 配置说明

配置项 说明 示例
WEBHOOK_ENABLED 是否启用Webhook true / false
WEBHOOK_TYPE Webhook类型 dingtalk(钉钉)/ feishu(飞书)
WEBHOOK_URL Webhook地址 机器人Webhook完整URL
WEBHOOK_KEYWORD 自定义关键词 aiagents通知(或您机器人设置的任何关键词)

钉钉机器人关键词设置

步骤1:创建钉钉自定义机器人

  1. 打开钉钉群聊
  2. 点击右上角"..." → 机器人 → 添加机器人
  3. 选择"自定义"机器人

步骤2:安全设置

  1. 安全设置选择:自定义关键词
  2. 输入关键词:aiagents通知(或您自己定义的关键词)
  3. 复制Webhook地址

钉钉关键词设置

步骤3:配置到系统

将关键词和Webhook地址配置到.env文件中:

WEBHOOK_KEYWORD="aiagents通知"
WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"

重要提示

  • .env文件中的关键词必须与钉钉机器人设置的关键词完全一致
  • 如果不匹配,消息将发送失败
  • 如果关键词为空,则不会在消息中添加关键词前缀

飞书机器人配置

飞书机器人通常不需要关键词,可以将WEBHOOK_KEYWORD留空或使用默认值:

WEBHOOK_TYPE="feishu"
WEBHOOK_KEYWORD=""

消息格式

钉钉消息示例

有关键词时:

标题:aiagents通知 - 000001 平安银行

### aiagents通知 - 股票监测提醒

**股票代码**: 000001
**股票名称**: 平安银行
...

无关键词时:

标题:000001 平安银行

### 股票监测提醒

**股票代码**: 000001
**股票名称**: 平安银行
...

测试配置

配置完成后,运行测试工具验证:

# Windows
.\venv\Scripts\python.exe test_notification_config.py

# Linux/Mac  
python test_notification_config.py

成功输出示例:

============================================================
[Webhook] 测试Webhook配置
============================================================

当前配置:
  - 启用状态: [已启用]
  - Webhook类型: dingtalk
  - 配置完整性: [完整]

[钉钉] 正在发送Webhook...
[成功] 钉钉Webhook发送成功
[成功] 钉钉Webhook测试成功!请检查钉钉群消息。

常见问题

Q1: 提示"关键词不匹配"

原因

  • .env文件中的WEBHOOK_KEYWORD与钉钉机器人设置不一致
  • .env文件编码问题导致关键词乱码

解决方案

  1. 检查钉钉机器人的关键词设置
  2. 确保.env文件使用UTF-8编码
  3. 运行fix_env.py重新生成.env文件:
    python fix_env.py
    

Q2: .env文件中文显示乱码

原因 文件编码不是UTF-8

解决方案 运行修复脚本:

python fix_env.py

Q3: 如何修改关键词

方法1:直接编辑.env文件

  1. 用支持UTF-8的编辑器(VS Code、Notepad++等)打开.env
  2. 修改WEBHOOK_KEYWORD的值
  3. 保存为UTF-8编码

方法2:使用环境配置界面

  1. 启动应用
  2. 进入"环境配置"页面
  3. 修改"Webhook自定义关键词"
  4. 保存配置

方法3:使用配置管理器

from config_manager import config_manager

# 读取当前配置
config = config_manager.read_env()

# 修改关键词
config['WEBHOOK_KEYWORD'] = '您的新关键词'

# 保存配置
config_manager.write_env(config)

Q4: 是否可以不使用关键词

可以!

如果您的钉钉机器人使用其他安全方式(如加签、IP白名单),可以将关键词设为空:

WEBHOOK_KEYWORD=""

系统会自动检测,如果关键词为空,则不会在消息中添加关键词前缀。

更新日志

v1.1 (2025-10-14)

  • 新增WEBHOOK_KEYWORD配置项
  • 支持自定义关键词
  • 修复.env文件中文编码问题
  • 优化消息格式,去除多余空格
  • 提供fix_env.py工具修复编码问题

v1.0 (2025-10-14)

  • 初始版本
  • 硬编码"aiagents通知"关键词

相关文件

  • .env - 环境配置文件
  • .env.example - 配置模板
  • fix_env.py - 编码修复工具
  • config_manager.py - 配置管理模块
  • notification_service.py - 通知服务模块
  • sector_strategy_scheduler.py - 定时任务模块
  • test_notification_config.py - 测试工具

技术实现

配置读取流程

# 1. 从环境变量读取
import os
from dotenv import load_dotenv
load_dotenv()
keyword = os.getenv('WEBHOOK_KEYWORD', 'aiagents通知')

# 2. 在notification_service中使用
class NotificationService:
    def _load_config(self):
        config['webhook_keyword'] = os.getenv('WEBHOOK_KEYWORD')
        
    def _send_dingtalk_webhook(self, notification):
        keyword = self.config.get('webhook_keyword', '')
        title_prefix = f"{keyword} - " if keyword else ""
        # ...构建消息

消息构建逻辑

# 如果有关键词
if keyword:
    title = f"{keyword} - {notification['symbol']} {notification['name']}"
    text = f"### {keyword} - 股票监测提醒\n..."
else:
    title = f"{notification['symbol']} {notification['name']}"
    text = f"### 股票监测提醒\n..."

总结

现在系统完全支持自定义Webhook关键词,用户可以根据自己的需求灵活配置:

灵活性:支持任意自定义关键词
兼容性:支持钉钉和飞书
易用性:简单配置即可使用
稳定性:自动处理编码问题

祝您使用愉快!