一個 Webhook 搞定 LINE、Zalo 和 X:東南亞團隊如何同時接收三個平台的訊息 — UnifyPort
胡志明市一家電子零售商的三人客服團隊,每天處理來自三個平台的客戶訊息。泰國買家用 LINE,越南本地客戶習慣 Zalo,跨境訂單的問題則透過 X(前 Twitter)私訊傳來。任何時刻,訂單詢問都可能從三個渠道同時湧入。
這支團隊曾為此維護三套獨立整合:三個 Webhook 端點、三種簽章驗證實作、三組憑證按不同週期輪換。新進工程師報到的第一週,全花在閱讀各平台文件上,一行業務邏輯都還沒寫到。
每個平台的官方接入都是一個獨立專案
麻煩在於,這三個平台在 API 層面本質上就是不同的。
LINE 需要在 LINE Developers Console 建立頻道、驗證 Webhook 端點所有權,並用 Channel Access Token 簽署每則回應。Webhook 事件以 events 陣列下發,message、follow、unfollow 等事件類型各有不同的結構。2026 年 1 月起,新頻道還須遵守 LINE MINI App 的頻道同意簡化強制規定。
Zalo 要求先申請官方帳號(Official Account),並符合 Terms v2 更新的規範——此次更新強制推行 Zalo ID 遷移機制,並調整了用戶資料刪除請求的處理期限規定。ZNS API(Zalo Notification Services)與訊息 API 是兩套獨立系統。Webhook 事件結構也與 LINE 不同:sender.id 在頂層,事件類型為純字串,簽章標頭的欄位名稱也完全不同。
X 在 2026 年 2 月前,基本讀取功能尚可依賴免費方案。如今免費方案已取消,改為按量計費:讀一則貼文收 $0.005,私訊(DM)存取權限僅限企業版(每月 $5,000)。對於只需透過私訊處理訂單詢問的小型團隊,這個費用完全不划算。
三套整合各自獨立失效,管理成本倍增。2026 年 2 月和 3 月 LINE 的兩次 Webhook 故障(400 錯誤與 5xx 延遲),正是分散整合的代價。
關鍵洞察:接收訊息不需要發送端憑證
上述大部分複雜度來自「發送訊息」的那一側——管理頻道、以官方身分認證、審核範本。但如果你的需求只是接收客戶訊息,再路由到 CRM、觸發自動化流程,或送進 AI 模型,就不需要成為任何平台的官方認證帳號。
你需要的資料(誰發的、發了什麼、何時發的)是一致的,無論透過哪條路徑取得。問題只在於:你要自行管理各平台的憑證輪換與格式正規化,還是讓這一層交給現成的工具處理?
一個端點,三個平台
UnifyPort 為 LINE、Zalo 和 X 提供非官方接入介面(同時支援 WhatsApp、Telegram 和 TikTok)。只需登記一個 Webhook URL 和一組共用 HMAC-SHA256 金鑰,三個平台的訊息統一投遞到同一端點,格式已正規化。
架構示意如下:
LINE 客戶 ──┐
Zalo 客戶 ──┼──► UnifyPort ──► POST /webhook(你的伺服器)
X 客戶 ──┘ X-UnifyPort-Signature: sha256=...
每則入站訊息,無論來自哪個平台,頂層欄位結構完全一致:
{
"platform": "line",
"event": "message",
"timestamp": 1748995200000,
"from": {
"id": "U4af4980629",
"display_name": "Somchai K."
},
"message": {
"id": "msg_01HX9K",
"type": "text",
"text": "สวัสดีค่ะ อยากสอบถามเรื่องสินค้า"
}
}
把 "platform": "line" 換成 "platform": "zalo" 或 "platform": "x",其餘結構不變。業務邏輯只需讀取 platform、from.id 和 message.text,就這樣。
簽章驗證同樣統一,一套實作涵蓋三個平台:
const crypto = require('crypto');
app.post('/webhook', express.raw({ type: '*/*' }), (req, res) => {
const signature = req.headers['x-unifyport-signature'];
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.UNIFYPORT_SECRET)
.update(req.body)
.digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
return res.status(401).end();
}
const { platform, from, message } = JSON.parse(req.body);
// 路由到 CRM、寫入資料庫、觸發自動化
routeInbound({ platform, senderId: from.id, text: message.text });
res.status(200).end();
});
不需要分別處理 LINE 的 x-line-signature 和 Zalo 的 mac 標頭。一個處理器,三個平台全覆蓋。
這支團隊的改變
胡志明市的這家零售商用一個週末完成了替換。那位入職第一週全花在讀文件的新工程師,幾小時內就寫完了統一處理器。現在根據 payload 裡的 platform 欄位自動分流:LINE 訊息進泰語服務佇列,Zalo 訊息進越南語服務佇列,X 私訊進國際客服群組。
2 月和 3 月 LINE 故障的顧慮也隨之消除——UnifyPort 的投遞層負責重試與補發,團隊的 Webhook 只需回應 200 即可。
開始接入
前往 unifyport.ai 接入第一個平台,無需申請官方帳號、無需排隊等頻道審核、無按訊息計費。LINE、Zalo 和 X 與 WhatsApp、Telegram、TikTok 同屬一個方案。
如果你已經跑著一套 WhatsApp 整合,想知道再加兩個平台是否又要花一週時間——答案是一個下午,不是一週。