跳到內容

omni-bot 客服 Bot

多租戶、多頻道的行業通用 Bot 平台。一家店一個租戶(store_id),一個租戶可含多個 bot (dialog 導覽 + FAQ),透過 /storeId/:botId 路由到達。KV session 與 D1 查詢全部以 storeId + botId 隔離。

核心:channel-agnostic 的 xstate v5 機器(@omni-bot/core-machine); LINE/Telegram/WeChat/PWA 各一個 adapter,共用同一台機器與同一份內容 JSON。

技術棧:Cloudflare Workers(5 個 prod worker,Astro6+Hono4+Svelte5+Drizzle/D1)+ pnpm workspace monorepo。

深度文件在 repo:~/Code/omni-bot/(docs/ARCHITECTURE.mddocs/CONTENT-JSON-GUIDE.mdTODO-REVIEW.md)。

Worker 頻道 說明
line-worker LINE webhook → 多租戶 → 機器 → 回覆
telegram-worker Telegram webhook + /selfcheck
wechat-worker WeChat GET verify + POST message,XML
admin-worker 租戶/bot 管理 API
(pwa) PWA adapter stub

完整流程見 repo docs/CONTENT-JSON-GUIDE.md(內容 JSON schema + 新增租戶步驟)。要點:

  1. 建租戶 store_id(權限/費用邊界)。
  2. 在租戶下建 bot,各自獨立的 content/FAQ/channels/session。
  3. 內容用同一份 JSON schema(sections/image),機器 channel-agnostic 處理。
  • 無 preview env(5 個 prod worker)。migration 先行。
  • 部署:./scripts/ship.sh deploy <worker>deploy-all
  • 本機實測:./scripts/ship.sh dev <worker>
  • 各頻道 webhook 設定畫面(LINE/Telegram/WeChat 後台對照)
  • 內容 JSON 編輯範例
  • /selfcheck 用法