---
title: "Gọi phương thức RPC và gửi sự kiện đến URL của bạn bằng ERPC CLI"
description: "erpc rpc call gửi một request JSON-RPC tới Solana/Ethereum mainnet; x402 trả phí từng lệnh, không cần tài khoản; erpc webhook POST sự kiện RPC tới URL của bạn."
canonical: "https://erpc.global/vi/doc/erpc-cli/rpc-call-and-webhooks/"
locale: "vi"
---

# Gọi phương thức RPC và gửi sự kiện đến URL của bạn bằng ERPC CLI

`erpc rpc call` gửi một request JSON-RPC từ terminal của bạn bằng tài khoản ERPC bạn đã đăng nhập, hoặc trả phí theo từng lệnh gọi bằng x402. `erpc webhook` gửi sự kiện RPC đến URL của bạn bằng POST.

Trang này mô tả ERPC CLI `v0.1.0-rc.4`, một bản pre-release.

## Gọi một phương thức RPC

Dùng tài khoản ERPC bạn đã đăng nhập để gọi Solana hoặc Ethereum mainnet. CLI chọn endpoint dùng chung dựa trên phương thức, hoặc bạn có thể tự chọn mạng.

```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
```

- **Tham số** là một mảng hoặc object JSON, một tệp với `--params-file`, hoặc `-` cho đầu vào chuẩn. Nếu không có tham số, lệnh gọi sẽ gửi `[]`.
- **Mạng** gồm `solana-mainnet` và `ethereum-mainnet` (cũng có thể viết `eth-mainnet`). `erpc rpc list-networks` liệt kê các mạng có RPC dùng chung của ERPC và RPC x402.
- **Endpoint của riêng bạn:** `--endpoint-url` chỉ dùng thông tin xác thực có trong URL đó. URL này phải là URL bảo mật hoặc loopback, và không chứa thông tin người dùng.

### Lệnh gọi dùng khóa nào trong các khóa của tài khoản

Một tài khoản có thể có nhiều khóa RPC. `erpc rpc call` và `erpc webhook run` thử lần lượt từng khóa, bắt đầu từ khóa chính, với một lệnh gọi `getHealth` cho mỗi khóa trước lệnh gọi của chính chúng. Khóa được đánh giá tại Solana RPC dùng chung, bất kể sau đó chain nào được gọi.

Khi RPC không nhận khóa nào và không hỏi được RPC về một trong các khóa, lệnh sẽ tiếp tục với khóa đầu tiên không hỏi được, và chính lệnh gọi của lệnh đó sẽ cho biết. Khi mọi khóa đều bị từ chối, lệnh thất bại với `the shared RPC takes none of the account's API keys from this machine (<n> tried)`: xem [Khi gặp lỗi](https://erpc.global/vi/doc/erpc-cli/worker-troubleshooting/).

## Trả phí theo từng lệnh gọi với x402

Để truy cập theo hình thức trả phí từng lệnh gọi mà không cần tài khoản, hãy yêu cầu một báo giá x402. `--quote` in báo giá ra mà không đọc ví và không thực hiện thanh toán nào.

Để thanh toán, hãy chạy lệnh không có `--quote` trong terminal. CLI hiển thị số tiền, yêu cầu xác nhận, rồi ký khoản thanh toán EURC trên Base đã được báo giá bằng ví mà `erpc wallet create` đã cấu hình. Hãy giữ EURC trên Base trong ví đó ([Thanh toán từ ví](https://erpc.global/vi/doc/erpc-cli/ai/#thanh-toán-từ-ví)).

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

## Gửi sự kiện đến URL của bạn

Một webhook cục bộ subscribe WebSocket RPC và gửi sự kiện đến URL của bạn bằng POST. Hãy khởi động một bộ nhận, tạo subscription, rồi chạy ID mà `create` trả về, trong terminal hoặc bằng trình giám sát tiến trình của bạn.

```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
```

Với hoạt động của ví trên Solana, hãy dùng `--template solana-wallet --wallet ADDRESS` thay cho `--method`. Với log của contract trên Ethereum, hãy dùng `--template evm-contract-events --address CONTRACT`. URL callback là HTTPS hoặc HTTP loopback, và các mạng giống với các mạng của `erpc rpc call`.

### Bộ nhận của bạn nhận được gì

- Mỗi POST chứa `webhook_id`, `network` và `notification` JSON-RPC gốc. Trả về HTTP 2xx để chấp nhận.
- Việc gửi bắt đầu từ subscription trực tiếp hiện tại. Khi khởi động lại, runner sẽ subscribe các sự kiện mới.
- Mất kết nối hoặc một callback thất bại sẽ kết thúc runner với trạng thái thoát khác không.
- `erpc webhook run` nhận `--once` để thử một lần gửi duy nhất, và `--endpoint-url` để dùng RPC WebSocket của riêng bạn.

## Quản lý webhook

| Lệnh | Chức năng |
| --- | --- |
| `erpc webhook list` | Liệt kê các subscription đã lưu |
| `erpc webhook show ID` | Hiển thị một subscription. Thông tin xác thực của callback được lược bỏ |
| `erpc webhook enabled-count` | Đếm các subscription đang được bật trên máy này |
| `erpc webhook pause ID` | Tắt việc gửi. Runner đang chạy sẽ thoát |
| `erpc webhook activate ID` | Cho phép một lần `run` về sau |
| `erpc webhook delete ID` | Xóa định nghĩa |

Các lệnh này chỉ xem và thay đổi cấu hình cục bộ. Trong script, hãy truyền `--yes` cho `pause`, `activate` và `delete`.
