跳轉到

Webhook 概觀介紹

當你的系統需要即時得知 U-Office Force X 裡發生了什麼事,例如一張表單被簽核完成、一筆申請被退回,過去傳統做法是定期輪詢(Polling)API 去問「有沒有新東西?」。問題在於:大多數時候答案都是「沒有」,因此白白浪費了運算資源和網路流量,卻無法實現真正的即時反應。

U-Office Force X 所提供的 Webhook 解決的正是這個問題:不再需要由你主動去問,而是事件發生時,由 U-Office Force X 系統主動通知你的系統。

什麼是 Webhook

Webhook 是一種由事件驅動的通知機制。當來源系統(U-Office Force X)發生特定事件時,它會主動發送一個 HTTP POST 請求到你預先設定好的 URL,將事件相關資料即時推送給你的系統。

用一個簡單的比喻來說:Polling 像是你每隔五分鐘打電話問餐廳「餐點好了嗎?」,而 Webhook 像是餐廳準備好餐點後直接打電話通知你來取餐,很明顯的後者方式會更有效率。

Webhook 運作機制

Webhook 的運作流程包含四個步驟:

sequenceDiagram
    participant 你的系統 as 你的系統(接收端)
    participant UOFX as U-Office Force X(來源端)

    你的系統->>UOFX: ① 註冊 Webhook(設定接收 URL + 事件類型)
    Note over UOFX: 事件發生(例:文件中心文件異動事件)
    UOFX->>你的系統: ② 發送 HTTP POST(夾帶事件資料)
    你的系統-->>UOFX: ③ 回傳 HTTP 200(確認收到)
    Note over UOFX: 若未收到回應,執行重試機制
    UOFX->>你的系統: ④ 重試通知(依重試策略)

① 註冊 Webhook 通道:你在來源系統必須提供一個接收通知的 URL,並且在 U-Office Force X 中指定要監聽哪些事件類型。

② 推送:當指定的事件發生時,來源系統會對你的 URL 發送 HTTP POST 請求,Request Body 中包含事件的詳細資料(JSON 格式)。

③ 確認:你的系統收到請求後,應回傳 HTTP 200 OK 表示已成功接收。

④ 重試:如果來源系統在一定時間內沒有收到你的成功回應(例如你的伺服器暫時無法連線),通常會依照重試策略再次發送通知,確保事件不會遺漏(達重試次數上限則停止重試)。

Webhook 與 Polling 的差異

比較項目 Webhook(推送模式) Polling(輪詢模式)
觸發方式 事件發生時主動通知 定期發送請求詢問
即時性 接近即時 取決於輪詢間隔
資源消耗 只在有事件時才有流量 無論有無事件都持續消耗
實作複雜度 需建立可公開存取的 HTTP 端點 只需能發出 HTTP 請求
適用場景 事件驅動、需即時反應 事件頻率極高、或無法建立公開端點

常見運用場景

Webhook 廣泛應用於系統整合與自動化流程中,以下是幾個典型場景:

業務流程自動化

  • 表單簽核完成後,自動將結果回寫至 ERP 系統
  • 請假申請核准後,自動更新出勤系統的假別額度
  • 採購單審批通過後,自動觸發供應商通知信

即時資料同步

  • 組織架構異動時,即時同步至第三方 HR 系統
  • 人員到職或離職時,自動更新 AD 帳號與權限

通知與監控

  • 重要表單被退回時,即時推送訊息至 Teams 頻道
  • 特定流程超時未處理時,觸發預警通知給主管

U-Office Force X 的 Webhook 支援

U-Office Force X 提供完整的 Webhook 機制,讓你的外部系統能在關鍵時候即時收到通知,無需透過 SDK 或 OpenAPI 輪詢查詢。

主要特性:

  • 事件訂閱:可針對特定事件進行訂閱(依 U-Office Force X 發展會提供更多不同的事件通知),只接收你關心的通知
  • 安全驗證:每次推送都包含簽章資訊,你的系統可驗證請求確實來自 U-Office Force X,防止偽造
  • 重試機制:當你的接收端暫時無法回應時,系統會自動重試,確保事件通知不遺漏
  • 彈性整合:只要你的系統能接收 HTTP POST 請求,無論使用什麼程式語言或框架,都能與 Webhook 整合
  • Webhook 與 SDK Callback 的差異: 如果你已經在使用 SDK 的 Callback 機制,可能會好奇兩者有什麼不同。簡單來說,SDK Callback 是在透過 SDK 起單時設定的回呼,屬於「你主動發起操作後的回應」;而 Webhook 是訂閱系統事件的通知,屬於「系統發生事件後的主動推送」,不限於你發起的操作。兩者可以搭配使用,涵蓋不同的整合需求。