← 所有文章
指南

一個 Webhook 搞定 LINE、Zalo 和 X:東南亞團隊如何同時接收三個平台的訊息 — UnifyPort

胡志明市一家電子零售商的三人客服團隊,每天處理來自三個平台的客戶訊息。泰國買家用 LINE,越南本地客戶習慣 Zalo,跨境訂單的問題則透過 X(前 Twitter)私訊傳來。任何時刻,訂單詢問都可能從三個渠道同時湧入。

這支團隊曾為此維護三套獨立整合:三個 Webhook 端點、三種簽章驗證實作、三組憑證按不同週期輪換。新進工程師報到的第一週,全花在閱讀各平台文件上,一行業務邏輯都還沒寫到。

每個平台的官方接入都是一個獨立專案

麻煩在於,這三個平台在 API 層面本質上就是不同的。

LINE 需要在 LINE Developers Console 建立頻道、驗證 Webhook 端點所有權,並用 Channel Access Token 簽署每則回應。Webhook 事件以 events 陣列下發,messagefollowunfollow 等事件類型各有不同的結構。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",其餘結構不變。業務邏輯只需讀取 platformfrom.idmessage.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 整合,想知道再加兩個平台是否又要花一週時間——答案是一個下午,不是一週。