Files
aiagents-stock/docs/Webhook自定义关键词功能说明.md
T

252 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Webhook自定义关键词功能说明
## 功能概述
系统现已支持自定义Webhook关键词配置,用户可以根据自己的钉钉/飞书机器人安全设置灵活配置关键词。
## 配置方法
### 1. 在.env文件中配置
```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地址
![钉钉关键词设置](https://user-images.githubusercontent.com/...)
### 步骤3:配置到系统
将关键词和Webhook地址配置到`.env`文件中:
```env
WEBHOOK_KEYWORD="aiagents通知"
WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
```
**重要提示**
- `.env`文件中的关键词必须与钉钉机器人设置的关键词完全一致
- 如果不匹配,消息将发送失败
- 如果关键词为空,则不会在消息中添加关键词前缀
## 飞书机器人配置
飞书机器人通常不需要关键词,可以将WEBHOOK_KEYWORD留空或使用默认值:
```env
WEBHOOK_TYPE="feishu"
WEBHOOK_KEYWORD=""
```
## 消息格式
### 钉钉消息示例
**有关键词时:**
```markdown
标题:aiagents通知 - 000001 平安银行
### aiagents通知 - 股票监测提醒
**股票代码**: 000001
**股票名称**: 平安银行
...
```
**无关键词时:**
```markdown
标题:000001 平安银行
### 股票监测提醒
**股票代码**: 000001
**股票名称**: 平安银行
...
```
## 测试配置
配置完成后,运行测试工具验证:
```bash
# 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文件:
```bash
python fix_env.py
```
### Q2: .env文件中文显示乱码
**原因**
文件编码不是UTF-8
**解决方案**
运行修复脚本:
```bash
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:使用配置管理器**
```python
from config_manager import config_manager
# 读取当前配置
config = config_manager.read_env()
# 修改关键词
config['WEBHOOK_KEYWORD'] = '您的新关键词'
# 保存配置
config_manager.write_env(config)
```
### Q4: 是否可以不使用关键词
**可以!**
如果您的钉钉机器人使用其他安全方式(如加签、IP白名单),可以将关键词设为空:
```env
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` - 测试工具
## 技术实现
### 配置读取流程
```python
# 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 ""
# ...构建消息
```
### 消息构建逻辑
```python
# 如果有关键词
if keyword:
title = f"{keyword} - {notification['symbol']} {notification['name']}"
text = f"### {keyword} - 股票监测提醒\n..."
else:
title = f"{notification['symbol']} {notification['name']}"
text = f"### 股票监测提醒\n..."
```
## 总结
现在系统完全支持自定义Webhook关键词,用户可以根据自己的需求灵活配置:
**灵活性**:支持任意自定义关键词
**兼容性**:支持钉钉和飞书
**易用性**:简单配置即可使用
**稳定性**:自动处理编码问题
祝您使用愉快!