昨天我們成功將訂單寫入 MongoDB,今天要進一步解決「通知店家」的問題。
顧客下單後,管理者不能每天盯著資料庫,因此需要透過 LINE Push API,自動將新訂單推播到指定的群組或帳號,確保店家第一時間收到提醒。
本文將帶你完成推播設定,並示範如何讓新訂單自動通知管理者群組。
店家不可能隨時打開後台查看訂單。
即時通知能降低漏單風險。
讓 LINE 訂單系統真正符合中小企業日常使用習慣。
與 Reply API 的差異:不需要使用者先講話,系統可主動發訊息。
適合「新訂單提醒」「狀態更新通知」。
Push API 限制:需記錄目標群組 ID 或使用者 ID。
小提醒!
要先將以下加入群組的權限打開喔
在群組裡發言,Webhook event 中會帶有 groupId
。
在程式中 console.log(event)
,記下這個 groupId
。
建議存入 .env
或 MongoDB 設定集合,避免硬編在程式中。
// utils/notify.js
async function notifyNewOrder(client, groupId, order) {
const itemsText = order.items
.map(it => `${it.productName} x ${it.quantity} ($${it.price})`)
.join("\n");
const total = order.items.reduce((sum, it) => sum + it.price * it.quantity, 0);
const message = {
type: "text",
text: `🔔 新訂單通知\n顧客ID: ${order.userId}\n${itemsText}\n總金額: $${total}\n狀態: ${order.status}`,
};
await client.pushMessage(groupId, message);
}
module.exports = { notifyNewOrder };
const { notifyNewOrder } = require("./utils/notify");
// 記得要建立 line client
// 在 /orders 建立訂單後
const order = await Order.create({ ... });
await notifyNewOrder(client, process.env.MANAGER_GROUP_ID, order);
簡單文字版:
🔔 新訂單通知
顧客ID: U12345
商品: 紅茶拿鐵 x 2
總金額: $120
狀態: Pending
Flex Message 版(更美觀,未來可優化項目):
商品列表 → Box 排版。
狀態欄位加上顏色標記。
適合訂單量多時的群組顯示。
推播到多個角色(老闆、出貨員)。
與訂單狀態變更整合(Day 13、Day 14)。
結合 LINE Notify,提供更細緻的通知機制。
理解 Push API 與 Reply API 的差異。
學會如何即時通知管理者群組,降低漏單風險。
讓系統更接近實際營運場景,從「能下單」邁向「能即時管理」。
明天(Day 13),我們即將會對訂單的狀態做管理,讓功能更完整,也能配合 Push API 做到針對狀態變動推播給合適的人員。