這是一個整合中藥配藥服務的 LINE Official Account Bot,讓用戶可以透過 LINE 享受便利的中藥配藥服務。
- 🔗 會員帳號綁定 - 透過帳號密碼登入系統
- 🏥 搜尋附近藥局 - 預設搜尋彰化市的中藥局
- 📷 藥單上傳 - 拍照上傳藥單給藥局
- 📋 訂單狀態追蹤 - 即時接收訂單狀態更新
- 📱 製作進度推播 - 配藥進度即時通知
- 🎉 完成通知 - 配藥完成與領藥提醒
- 加入 LINE OA → 用戶加入 LINE Official Account
- 綁定會員帳號 → 使用現有會員帳號密碼登入
- 搜尋附近藥局 → 瀏覽可用的中藥局
- 上傳藥單 → 拍照上傳藥單照片
- 選擇配藥藥局 → 選擇要配藥的藥局
- 藥局確認處理 → 等待藥局處理訂單
- 藥局製作 → 追蹤製作進度
- 完成通知領藥 → 收到完成通知並前往領藥
- 前端: LINE Messaging API + TypeScript
- 後端: Node.js + Express
- 通訊: WebSocket 即時推播
- 檔案處理: Multer 圖片上傳
- API 整合: 現有的送藥服務 API
cd line-bot
npm install複製 .env 檔案並填入正確的設定值:
# LINE Bot 設定
LINE_CHANNEL_ACCESS_TOKEN=your_channel_access_token_here
LINE_CHANNEL_SECRET=your_channel_secret_here
# 後端 API 設定
API_BASE_URL=https://stage-backend.docter.pro/back-end/user/app
STAFF_API_BASE_URL=https://stage-backend.docter.pro/back-end/app
# WebSocket 設定
WEBSOCKET_URL=https://stage-websocket.docter.pro/member
# 服務設定
PORT=3000
NODE_ENV=development- 前往 LINE Developers Console
- 建立新的 Provider 和 Messaging API Channel
- 取得 Channel Access Token 和 Channel Secret
- 設定 Webhook URL:
https://your-domain.com/webhook - 啟用 "Use webhook" 選項
# 開發模式
npm run dev
# 編譯
npm run build
# 生產模式
npm start本 Bot 整合了現有的送藥服務 API:
- 登入:
POST /login/tscp - 查詢藥局:
GET /area - 查詢訂單:
GET /delivery/medicine - 新增訂單:
POST /delivery/medicine
- 連線:
wss://websocket-url/member - 房間:
member.delivery.medicine.{member_id} - 頻道:
member.deliveryMedicine.{member_id}
登入/會員登入- 開始登入流程搜尋藥局/附近藥局- 搜尋可用藥局我的訂單/訂單查詢- 查看訂單記錄主選單/選單- 顯示主功能選單
- 上傳圖片 - 直接傳送藥單照片
- 選擇藥局 - 點選藥局卡片選擇配藥藥局
- 查看詳情 - 點選按鈕查看訂單詳細資訊
Bot 會在以下情況主動推送訊息:
- 訂單狀態變更 - 收單、補單、拒單、排單、完成
- 製作進度 - 配藥製作進度更新
- 完成通知 - 配藥完成與領藥提醒
line-bot/
├── src/
│ ├── handlers/ # 事件處理器
│ │ ├── messageHandler.ts # 訊息處理
│ │ ├── postbackHandler.ts # 回調處理
│ │ ├── loginHandler.ts # 登入處理
│ │ ├── pharmacyHandler.ts # 藥局搜尋
│ │ ├── orderHandler.ts # 訂單查詢
│ │ ├── uploadHandler.ts # 檔案上傳
│ │ └── notificationHandler.ts # 推播通知
│ ├── services/ # 服務層
│ │ ├── apiService.ts # API 呼叫
│ │ ├── userService.ts # 用戶狀態管理
│ │ └── websocketService.ts # WebSocket 連線
│ ├── templates/ # 訊息模板
│ │ └── messageTemplates.ts # LINE 訊息模板
│ ├── types/ # 型別定義
│ │ └── index.ts
│ ├── routes/ # 路由設定
│ │ └── index.ts
│ └── index.ts # 主程式入口
├── uploads/ # 上傳檔案目錄
├── .env # 環境變數
├── package.json
├── tsconfig.json
└── README.md
- 連接 GitHub 倉庫到 Railway
- 設定環境變數
- Railway 會自動偵測並部署 Node.js 應用
- 安裝 Vercel CLI:
npm i -g vercel - 執行部署:
vercel - 設定環境變數在 Vercel Dashboard
- 所有 API 呼叫都使用 Bearer Token 認證
- 檔案上傳限制大小和類型
- 用戶狀態暫存在記憶體(生產環境建議使用 Redis)
- WebSocket 連線需要有效的 access_token
- Webhook 無法接收 - 檢查 LINE Bot 設定和 HTTPS 憑證
- API 呼叫失敗 - 確認 API_BASE_URL 和網路連線
- WebSocket 連線失敗 - 檢查 WEBSOCKET_URL 和 token 有效性
- 檔案上傳失敗 - 確認 uploads 目錄權限和檔案大小限制
# 查看即時日誌
npm run dev
# 生產環境日誌
pm2 logs line-bot如有問題請聯絡開發團隊或查看 API 文件。
🎯 目標: 讓傳統中藥配藥服務數位化,提供現代化的用戶體驗!