記錄 2026-03-31 已實施的架構決策: - 統一 Telegram 到 K8s AWOOOI API Webhook 模式 - 解決 OpenClaw (188) Long Polling 雙軌競爭問題 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
90 lines
1.9 KiB
Markdown
90 lines
1.9 KiB
Markdown
# ADR-045: Telegram Gateway 統一到 K8s AWOOOI API
|
|
|
|
## 狀態
|
|
**已實施** (2026-03-31)
|
|
|
|
## 背景
|
|
|
|
系統存在 Telegram 雙軌問題:
|
|
- **OpenClaw (188)**: Long Polling 模式,處理 Incident 告警
|
|
- **K8s AWOOOI API**: 也有 Telegram 端點,但未啟用
|
|
|
|
雙軌導致:
|
|
1. Token 競爭風險
|
|
2. 回調路由不明確
|
|
3. 維運複雜度高
|
|
|
|
## 決策
|
|
|
|
**方案 A: 統一到 K8s AWOOOI API (Webhook 模式)**
|
|
|
|
### 架構
|
|
|
|
```
|
|
Telegram API
|
|
│
|
|
▼ (Webhook)
|
|
awoooi.wooo.work/api/v1/telegram/webhook
|
|
│
|
|
▼
|
|
K8s AWOOOI API Pod
|
|
│
|
|
├─→ Incident 處理
|
|
├─→ Approval 回調
|
|
└─→ AI 對話 (未來)
|
|
```
|
|
|
|
### 優點
|
|
- 業界標準 (Webhook > Polling)
|
|
- 單一入口,易於監控
|
|
- 自動擴展 (K8s)
|
|
- 統一日誌 (SignOz)
|
|
|
|
## 實施步驟
|
|
|
|
### 1. 設定 Webhook ✅
|
|
```bash
|
|
curl "https://api.telegram.org/bot${TOKEN}/setWebhook?url=https://awoooi.wooo.work/api/v1/telegram/webhook"
|
|
# {"ok":true,"result":true,"description":"Webhook was set"}
|
|
```
|
|
|
|
### 2. 停用 OpenClaw Telegram Polling ✅
|
|
```bash
|
|
# .env
|
|
TELEGRAM_ENABLED=false
|
|
|
|
# app/bot/telegram.py - 加入檢查
|
|
if os.getenv('TELEGRAM_ENABLED', 'true').lower() == 'false':
|
|
logger.info("Telegram Bot disabled via TELEGRAM_ENABLED=false (ADR-045)")
|
|
return
|
|
```
|
|
|
|
### 3. 重啟 OpenClaw
|
|
```bash
|
|
sudo systemctl restart clawbot
|
|
```
|
|
|
|
## 驗證清單
|
|
|
|
- [x] Webhook URL 已設定
|
|
- [x] K8s 端點 HTTP 200
|
|
- [x] OpenClaw 代碼已 Patch
|
|
- [ ] OpenClaw 已重啟
|
|
- [ ] 發送測試訊息確認
|
|
|
|
## 回滾計畫
|
|
|
|
如需回滾到 Polling 模式:
|
|
```bash
|
|
# 1. 刪除 Webhook
|
|
curl "https://api.telegram.org/bot${TOKEN}/deleteWebhook"
|
|
|
|
# 2. 恢復 OpenClaw
|
|
# .env: TELEGRAM_ENABLED=true
|
|
sudo systemctl restart clawbot
|
|
```
|
|
|
|
## 相關文件
|
|
- [ADR-035](ADR-035-telegram-alert-chain-enforcement.md) - Telegram 告警鏈路
|
|
- [feedback_telegram_token_disaster.md](../../.claude/projects/-Users-ogt-awoooi/memory/feedback_telegram_token_disaster.md) - Token 災難鐵律
|