6.0 KiB
6.0 KiB
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:创建钉钉自定义机器人
- 打开钉钉群聊
- 点击右上角"..." → 机器人 → 添加机器人
- 选择"自定义"机器人
步骤2:安全设置
- 安全设置选择:自定义关键词
- 输入关键词:aiagents通知(或您自己定义的关键词)
- 复制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文件编码问题导致关键词乱码
解决方案:
- 检查钉钉机器人的关键词设置
- 确保.env文件使用UTF-8编码
- 运行
fix_env.py重新生成.env文件:python fix_env.py
Q2: .env文件中文显示乱码
原因: 文件编码不是UTF-8
解决方案: 运行修复脚本:
python fix_env.py
Q3: 如何修改关键词
方法1:直接编辑.env文件
- 用支持UTF-8的编辑器(VS Code、Notepad++等)打开.env
- 修改WEBHOOK_KEYWORD的值
- 保存为UTF-8编码
方法2:使用环境配置界面
- 启动应用
- 进入"环境配置"页面
- 修改"Webhook自定义关键词"
- 保存配置
方法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关键词,用户可以根据自己的需求灵活配置:
✅ 灵活性:支持任意自定义关键词
✅ 兼容性:支持钉钉和飞书
✅ 易用性:简单配置即可使用
✅ 稳定性:自动处理编码问题
祝您使用愉快!