Files
awoooi/docs/adr/ADR-045-telegram-gateway-consolidation.md
OG T 5086bafa36 docs: ADR-045 Telegram Gateway 統一到 K8s AWOOOI API
記錄 2026-03-31 已實施的架構決策:
- 統一 Telegram 到 K8s AWOOOI API Webhook 模式
- 解決 OpenClaw (188) Long Polling 雙軌競爭問題

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 09:17:08 +08:00

1.9 KiB

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

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

相關文件