← 所有文章
指南

一個 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": "x",
  "event": "message",
  "timestamp": 1748995200000,
  "from": {
    "id": "1234567890",
    "display_name": "customer_hk"
  },
  "message": {
    "id": "msg_03ZP7N",
    "type": "text",
    "text": "Hello, I have a question about my order"
  }
}

"platform": "x" 換成 "platform": "line" 或者 "platform": "zalo",其餘結構唔變。業務邏輯只需讀取 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);
  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 整合,想知道再加兩個平台係咪又要花一個星期——答案係一個下午,唔係一個星期。