記錄 2026-03-31 已實施的架構決策: - 統一 Telegram 到 K8s AWOOOI API Webhook 模式 - 解決 OpenClaw (188) Long Polling 雙軌競爭問題 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
ADR-045: Telegram Gateway 統一到 K8s AWOOOI API
狀態
已實施 (2026-03-31)
背景
系統存在 Telegram 雙軌問題:
- OpenClaw (188): Long Polling 模式,處理 Incident 告警
- K8s AWOOOI API: 也有 Telegram 端點,但未啟用
雙軌導致:
- Token 競爭風險
- 回調路由不明確
- 維運複雜度高
決策
方案 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 ✅
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 ✅
# .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
sudo systemctl restart clawbot
驗證清單
- Webhook URL 已設定
- K8s 端點 HTTP 200
- OpenClaw 代碼已 Patch
- OpenClaw 已重啟
- 發送測試訊息確認
回滾計畫
如需回滾到 Polling 模式:
# 1. 刪除 Webhook
curl "https://api.telegram.org/bot${TOKEN}/deleteWebhook"
# 2. 恢復 OpenClaw
# .env: TELEGRAM_ENABLED=true
sudo systemctl restart clawbot
相關文件
- ADR-035 - Telegram 告警鏈路
- feedback_telegram_token_disaster.md - Token 災難鐵律