---
title: "使用 ERPC CLI 呼叫 RPC 方法並將事件傳送到您的 URL"
description: "erpc rpc call 向 Solana 或 Ethereum 主網傳送一個 JSON-RPC 請求，x402 無需帳戶即可按次付費，erpc webhook 以 POST 方式將 RPC 事件傳送到您的 URL。"
canonical: "https://erpc.global/zh-tw/doc/erpc-cli/rpc-call-and-webhooks/"
locale: "zh-tw"
---

# 使用 ERPC CLI 呼叫 RPC 方法並將事件傳送到您的 URL

`erpc rpc call` 使用您已登入的 ERPC 帳戶，從終端機傳送一個 JSON-RPC 請求，或透過 x402 按次付費。`erpc webhook` 以 POST 方式將 RPC 事件傳送到您的 URL。

本頁說明 ERPC CLI `v0.1.0-rc.4`，這是發行前版本。

## 呼叫 RPC 方法

使用您已登入的 ERPC 帳戶呼叫 Solana 或 Ethereum 主網。CLI 會根據方法選擇共享端點，您也可以自行選擇網路。

```sh
erpc login
erpc rpc call getSlot
erpc --json rpc call eth_getBlockByNumber '["latest", false]' --network ethereum-mainnet
erpc rpc call eth_call --params-file params.json
printf '%s' '["finalized", false]' | erpc rpc call eth_getBlockByNumber -
erpc rpc call getHealth --endpoint-url http://127.0.0.1:8899
```

- **參數**可以是 JSON 陣列或物件、以 `--params-file` 指定的檔案，或代表標準輸入的 `-`。未提供參數時，呼叫會傳送 `[]`。
- **網路**為 `solana-mainnet` 與 `ethereum-mainnet`（也可寫作 `eth-mainnet`）。`erpc rpc list-networks` 會列出提供 ERPC 共享 RPC 與 x402 RPC 的網路。
- **您自己的端點**：`--endpoint-url` 只使用該 URL 中的憑證。它必須是安全的 URL 或 loopback，且不得包含使用者資訊。

### 呼叫會使用帳戶的哪一組金鑰

一個帳戶可以有多組 RPC 金鑰。`erpc rpc call` 與 `erpc webhook run` 會依序嘗試這些金鑰，從主要金鑰開始，並在執行自身的呼叫之前，對每組金鑰各進行一次 `getHealth` 呼叫。無論之後呼叫的是哪條鏈，金鑰都是在共享的 Solana RPC 上判定。

若 RPC 未接受任何金鑰，且無法就其中某組金鑰向 RPC 詢問，命令會使用第一組無法詢問的金鑰繼續執行，並由命令自身的呼叫顯示結果。若所有金鑰都被拒絕，命令會以 `the shared RPC takes none of the account's API keys from this machine (<n> tried)` 失敗：請參閱[出錯時](https://erpc.global/zh-tw/doc/erpc-cli/worker-troubleshooting/)。

## 透過 x402 按次付費

若要在沒有帳戶的情況下按次付費存取，請索取 x402 報價。`--quote` 會列印報價，而不讀取錢包，也不進行付款。

若要付款，請在終端機中執行不帶 `--quote` 的命令。CLI 會顯示金額、要求確認，並使用 `erpc wallet create` 所設定的錢包，簽署報價中的 Base EURC 付款。請在該錢包中保有 Base 上的 EURC（[從錢包付款](https://erpc.global/zh-tw/doc/erpc-cli/ai/#從錢包付款)）。

```sh
erpc rpc call getSlot --network solana-mainnet --x402 --quote
erpc rpc call eth_blockNumber --x402
```

## 將事件傳送到您的 URL

本機 Webhook 會訂閱 RPC WebSocket，並以 POST 方式將事件傳送到您的 URL。請先啟動接收端，再建立訂閱，然後在終端機中或在您的行程監督程式下，執行 `create` 回傳的 ID。

```sh
erpc webhook create --name slots --network solana-mainnet \
  --url http://127.0.0.1:8080/events --method slotSubscribe
erpc webhook create --name heads --network ethereum-mainnet \
  --url http://127.0.0.1:8080/events --method eth_subscribe --params '["newHeads"]'
erpc webhook list
erpc webhook run 1
```

針對 Solana 上的錢包活動，請使用 `--template solana-wallet --wallet ADDRESS` 取代 `--method`。針對 Ethereum 合約日誌，請使用 `--template evm-contract-events --address CONTRACT`。回呼 URL 須為 HTTPS 或 loopback HTTP，網路則與 `erpc rpc call` 的相同。

### 接收端會收到什麼

- 每個 POST 都包含 `webhook_id`、`network` 與原始的 JSON-RPC `notification`。請回傳 HTTP 2xx 以接受它。
- 傳遞從目前的即時訂閱開始。重新啟動執行器會訂閱新的事件。
- 斷線或回呼失敗會使執行器以非零狀態結束。
- `erpc webhook run` 可使用 `--once` 測試單次傳遞，也可透過 `--endpoint-url` 使用您自己的 WebSocket RPC。

## 管理 Webhook

| 命令 | 作用 |
| --- | --- |
| `erpc webhook list` | 列出已儲存的訂閱 |
| `erpc webhook show ID` | 顯示一個訂閱。回呼憑證會被省略 |
| `erpc webhook enabled-count` | 計算本機上已啟用的訂閱數量 |
| `erpc webhook pause ID` | 停用傳遞。正在執行的執行器會結束 |
| `erpc webhook activate ID` | 讓之後的 `run` 可以執行 |
| `erpc webhook delete ID` | 移除定義 |

這些命令只會檢查與變更本機設定。在指令碼中，請對 `pause`、`activate` 與 `delete` 傳入 `--yes`。
