---
title: "什麼是 webhook？"
description: "如何設定並使用 webhook 來取得即時 Web3 通知"
---

# 什麼是 webhook？

Webhooks 讓開發者能夠以自動化的方式，在兩個應用程式之間實現即時通訊。相較於持續輪詢伺服器以取得資訊，webhooks 快速、易於設定，且經常被視為建置完整 API 服務的輕量替代方案。

透過 [Alchemy Notify API](https://www.alchemy.com/notify)，開發者可以針對地址活動、交易上鏈等關鍵事件，向使用者推送即時通知。

舉例來說，使用 webhooks 可以讓建置具備[即時交易通知](https://www.alchemy.com/docs/reference/webhooks-overview)功能的去中心化應用程式變得更容易實現。導入 webhooks 能大幅改善終端使用者的體驗，並省去從頭建置一套耗時且複雜的通知系統的必要。

本文將說明什麼是 webhook、它的運作方式、其眾多的 web3 通知使用情境，以及[如何開始使用 Web3 Webhooks](https://www.alchemy.com/docs/reference/notify-api-quickstart)。

## **什麼是 webhook？**

**webhook 是一種自動化媒介，讓一個應用程式能夠將即時資料推送到另一個應用程式。** Webhooks 只能促成兩個服務之間的單向通訊，比輪詢端點更快，且所需的開發工作量更少。

### 什麼是 webhook URL？

webhook URL 是應用程式接收來自發送端應用程式資料的位址。通常，webhooks 用於連接兩個不同的應用程式，其中一個是事件資訊的「發送方」，另一個是「訂閱方」。當發送端應用程式發生事件時，它會將該資料傳送至訂閱端應用程式的 webhook URL。

#### 什麼是 webhook 端點？

**webhook 端點是為了讓發送端應用程式能將資料提供給訂閱端應用程式所設定的 webhook URL。** 為了讓發送端應用程式能將資料提供給訂閱端應用程式，它需要一個 webhook URL 來傳遞所需的資訊。

實際上，webhook URL 就是該端點，且需要是公開的，才能讓資訊在應用程式之間順暢流動。一旦請求被觸發且資料已被解析，訂閱端應用程式便可以傳回一則帶有 HTTPS 狀態碼的回呼訊息，以告知資料已收到。

### 什麼是 webhook API？

相較於持續輪詢某個端點以判斷狀態是否發生變化，webhooks 會在資訊一產生時就立即提供。換句話說，webhooks 可以被視為「反向 API」，因為通訊是由提供資料的程式發起，而非由請求資料的程式發起。

就像傳統 API 一樣，資訊與功能是在兩個軟體介面之間共享的。基於使用 webhooks 所帶來的效率與實際效益，開發者將這種媒介視為一種可行、輕量的即時資料更新與 web3 通知解決方案。

### 什麼是 webhook 整合？

webhook 整合讓開發者能夠使用一個獨特的 URL，在一個應用程式與另一個應用程式之間自動化訊息傳遞。舉例來說，開發者可以使用 Zapier，這是一款軟體工具，能在兩個或多個應用程式之間自動化重複性任務，而不需要撰寫新的功能程式碼。若沒有 Zapier，使用者將不會收到通知，其回應也只會是另一個回應，通常是一個 JSON 物件。

相反地，[將 Zapier 與 Alchemy webhooks 整合](https://www.alchemy.com/docs/reference/webhooks-overview)可以將 Web3 資料分享至各種第三方應用程式，例如 Discord、Twitter 與 Slack。因此，當鏈上事件發生時（例如某個受追蹤的錢包出現新活動），Zapier 就能將訊息傳送到指定的 Slack 頻道、Discord 伺服器或 Twitter 帳號。實際上，像 Zapier 這樣的服務改善了通訊循環，為開發者與使用者創造出更實用的產品。

將 Zapier 與 Alchemy webhooks 整合相對簡單直接。事實上，開發者不需要用到過多工具就能完成整合，只需要[一個 Alchemy 帳戶](https://www.alchemy.com/)與一個 Zapier 帳戶。

### webhooks 能做什麼？

Webhooks 讓應用程式能夠將即時資料分享給其他應用程式，藉此提升功能性。為了加快 Web3 應用程式的開發，以 webhooks 為基礎的 [Alchemy Notify API](https://www.alchemy.com/docs/reference/webhooks-overview)可協助使用者處理諸如監控地址活動、交易上鏈等事項，涵蓋 Ethereum、Polygon、Optimism 與 Arbitrum 區塊鏈網路。

開發者可以使用 Alchemy Notify 為四種類型的通知建置功能：

- 已上鏈交易 webhook 可用於在透過您的 API key 送出的交易成功上鏈時通知您的應用程式。此通知在需要立即告知客戶其交易已執行完成時相當實用。
- 已丟棄交易 webhook 用於在透過您的 API key 送出的交易被丟棄時通知您的應用程式。
- webhook 也可用於追蹤所有 ETH、[ERC20](https://www.alchemy.com/overviews/erc20-solidity) 與 ERC721 的轉帳事件，數量不限，開發者可依需求追蹤任意多個 Ethereum 地址。

Webhooks 可用於多種用途，用以通知使用者新的活動或 dApp 更新。

<VideoCta
  title="實際體驗 Alchemy 儀表板"
  description="30 分鐘導覽：即時示範儀表板中的每項工具。"
  ctaHref="/resources/dashboard-demo"
  thumbnail={{
    src: "https://media.alchemy.com/alchemy-dashboard-demo-thumbnail.png",
    alt: "Alchemy Dashboard Demo",
  }}
/>


### webhook 範例

由於 Ethereum 區塊鏈本身並不原生支援通知功能，dApp 使用者若不持續重新整理應用程式或查看 etherscan，就無法隨時掌握交易狀態。整體而言，這是一個耗時的過程，會使使用者不願再次使用該應用程式。

現在，透過 Alchemy Notify 與 [Alchemy 的待處理交易 WebSocket](https://www.alchemy.com/docs/reference/subscription-api)，使用者可以[無縫追蹤已上鏈與待處理的 ETH 交易](https://www.alchemy.com/docs/how-to-send-transactions-on-ethereum)。

前述教學所產生的結果，讓開發者能夠針對交易生命週期中的任何活動，向使用者發送簡訊通知。這帶來了更優質的使用者體驗，能在當今競爭激烈的市場中提供優勢。

### 為什麼 Web3 開發者應該使用 webhooks？

隨著 Ethereum 等區塊鏈網路日益普及，去中心化應用程式在架構上也變得更加複雜。然而，Web3 生態系的終端使用者體驗仍落後於 Web2。

Web3 使用者體驗基礎建設中缺失的一環，就是即時通知。舉例來說，終端使用者想知道他們的交易何時執行、交易何時失敗，以及他們的競標何時被接受，還有其他各種需求。

開發者需要了解，對 webhooks 支援不足，除了前述原因外，還會因交易焦慮與延遲確認等問題，導致 dApp 使用者完全放棄使用其服務。

一般來說，為[應用程式](https://www.alchemy.com/dapps/top/defi-dapps)建置即時通知功能，一直是開發者的痛點，原因在於從零開始建置系統的複雜度、所需時間，以及難以避免的錯誤。

### webhooks 如何運作？

開發者可以將 webhook 通知類比為簡訊通知。想要傳送訊息的終端使用者持有您已註冊的電話號碼，該號碼即作為傳遞資訊的地址。透過隨後回覆訊息以確認已收到，您便能建立起雙向通訊系統。

#### **如何呼叫 webhook**

呼叫 webhook 需要開發者透過三個步驟提供一些輸入：

1. 開發者確認應接收資料的應用程式的端點或 webhook URL

2. 該 webhook URL 需要被整合進送出資料的應用程式中，以便能夠正確解析 payload 與查詢變數而不出現問題。

3. 指定 webhook 的規則，這些規則最終將觸發向終端使用者發送某種事件類型的通知。

現今，開發者可以[透過 Alchemy 的儀表板或以程式化方式設定 webhooks](https://www.alchemy.com/docs/reference/notify-api-quickstart)。若想在 Web3 教學情境中練習呼叫 webhook，可參考[如何在 Telegram 建置巨鯨警報機器人](https://github.com/alchemyplatform/webhook-examples)。

#### **webhooks 需要多久時間才能運作？**

**確保 webhook 正常運作所需的時間相當有限。** 事實上，開發者可以參考這篇[如何設定 webhook 伺服器](https://github.com/alchemyplatform/webhook-examples)的教學，其中展示了使用 node-express 設定或使用 python-django 建置的 webhook 伺服器設定，以三個簡單步驟設定 Alchemy Notify webhook 伺服器的方法。

整體而言，安裝、執行並在本機測試 webhook 伺服器所需的工作量不高，只需幾個指令即可完成。

## 開始在您的 Web3 應用程式中使用 webhooks

隨著 Ethereum、Optimism、Arbitrum 與 Polygon 皆已支援 Webhook，web3 開發者應評估使用 Alchemy Notify 來改善其去中心化應用程式使用者體驗的各種應用情境。

隨著 web3 領域的建置者與競爭日益增多，使用者體驗設計成為錢包等面向消費者的應用程式，用以在競爭對手中脫穎而出的重要一環。
