---
title: "เรียก RPC method และส่งเหตุการณ์ไปยัง URL ของคุณด้วย ERPC CLI"
description: "erpc rpc call ส่ง JSON-RPC request เดียวถึง Solana หรือ Ethereum mainnet, x402 จ่ายรายครั้งโดยไม่มีบัญชี และ erpc webhook จะ POST เหตุการณ์ RPC ไปยัง URL ของคุณ"
canonical: "https://erpc.global/th/doc/erpc-cli/rpc-call-and-webhooks/"
locale: "th"
---

# เรียก RPC method และส่งเหตุการณ์ไปยัง URL ของคุณด้วย ERPC CLI

`erpc rpc call` ส่ง JSON-RPC request หนึ่งรายการจากเทอร์มินัลของคุณด้วยบัญชี ERPC ที่ลงชื่อเข้าใช้ไว้ หรือชำระเงินต่อการเรียกด้วย x402 `erpc webhook` จะ POST เหตุการณ์ RPC ไปยัง URL ของคุณ

หน้านี้อธิบาย ERPC CLI `v0.1.0-rc.4` ซึ่งเป็นเวอร์ชัน pre-release

## เรียก RPC method

ใช้บัญชี ERPC ที่ลงชื่อเข้าใช้ไว้เพื่อเรียก Solana หรือ Ethereum mainnet โดย CLI จะเลือก endpoint ที่ใช้ร่วมกันตาม method หรือคุณจะเลือกเครือข่ายเองก็ได้

```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 array หรือ object, ไฟล์ที่ระบุด้วย `--params-file` หรือ `-` สำหรับ standard input หากไม่ระบุ การเรียกจะส่ง `[]`
- **เครือข่าย** ได้แก่ `solana-mainnet` และ `ethereum-mainnet` (ใช้ `eth-mainnet` ได้ด้วย) ส่วน `erpc rpc list-networks` จะแสดงรายการเครือข่ายที่มี shared RPC ของ ERPC และ RPC แบบ x402
- **Endpoint ของคุณเอง:** `--endpoint-url` จะใช้เฉพาะข้อมูลรับรองที่อยู่ใน URL นั้น โดย URL ต้องเป็น URL ที่ปลอดภัยหรือ loopback และต้องไม่มีข้อมูลผู้ใช้

### การเรียกแต่ละครั้งใช้คีย์ใดของบัญชี

บัญชีหนึ่งมี RPC key ได้หลายรายการ `erpc rpc call` และ `erpc webhook run` จะลองใช้ทีละคีย์ตามลำดับ โดยเริ่มจากคีย์หลัก และเรียก `getHealth` หนึ่งครั้งต่อคีย์ก่อนการเรียกของคำสั่งเอง คีย์จะถูกตรวจสอบที่ shared RPC ของ Solana ไม่ว่าหลังจากนั้นจะเรียกเชนใดก็ตาม

หาก RPC ไม่ยอมรับคีย์ใดเลย และไม่สามารถสอบถาม RPC เกี่ยวกับคีย์บางคีย์ได้ คำสั่งจะทำงานต่อด้วยคีย์แรกที่สอบถามไม่ได้ และการเรียกของคำสั่งเองจะเป็นตัวบอกผล หากทุกคีย์ถูกปฏิเสธ คำสั่งจะล้มเหลวพร้อมข้อความ `the shared RPC takes none of the account's API keys from this machine (<n> tried)` โปรดดู[เมื่อทำงานล้มเหลว](https://erpc.global/th/doc/erpc-cli/worker-troubleshooting/)

## ชำระเงินต่อการเรียกด้วย x402

หากต้องการเข้าถึงแบบชำระเงินต่อการเรียกโดยไม่ต้องมีบัญชี ให้ขอใบเสนอราคา x402 โดย `--quote` จะแสดงใบเสนอราคาโดยไม่อ่าน wallet และไม่ชำระเงิน

หากต้องการชำระเงิน ให้รันคำสั่งโดยไม่ใส่ `--quote` ในเทอร์มินัล แล้ว CLI จะแสดงจำนวนเงิน ขอการยืนยัน จากนั้นจึงลงนามการชำระเงินด้วย EURC บน Base ตามใบเสนอราคา โดยใช้ wallet ที่ `erpc wallet create` ตั้งค่าไว้ โปรดเก็บ EURC บน Base ไว้ใน wallet นั้น ([ชำระเงินจาก wallet](https://erpc.global/th/doc/erpc-cli/ai/#ชำระเงินจาก-wallet))

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

## ส่งเหตุการณ์ไปยัง URL ของคุณ

Webhook ในเครื่องจะ subscribe RPC WebSocket แล้ว POST เหตุการณ์ไปยัง URL ของคุณ ให้เริ่มตัวรับ สร้าง subscription แล้วรัน ID ที่ `create` ส่งคืนมา ในเทอร์มินัลหรือภายใต้ process supervisor ของคุณ

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

สำหรับกิจกรรมของ wallet บน Solana ให้ใช้ `--template solana-wallet --wallet ADDRESS` แทน `--method` สำหรับ log ของ contract บน Ethereum ให้ใช้ `--template evm-contract-events --address CONTRACT` callback URL เป็น HTTPS หรือ HTTP แบบ loopback และเครือข่ายเป็นชุดเดียวกับของ `erpc rpc call`

### สิ่งที่ตัวรับของคุณได้รับ

- POST แต่ละครั้งมี `webhook_id`, `network` และ `notification` ของ JSON-RPC ต้นฉบับ ให้ตอบกลับด้วย HTTP 2xx เพื่อรับ POST นั้น
- การส่งเหตุการณ์เริ่มจาก subscription ที่ทำงานอยู่ในขณะนั้น เมื่อรีสตาร์ท runner จะ subscribe เหตุการณ์ใหม่
- การตัดการเชื่อมต่อหรือ callback ที่ล้มเหลวจะทำให้ runner จบการทำงานด้วย exit status ที่ไม่ใช่ศูนย์
- `erpc webhook run` รับ `--once` เพื่อทดสอบการส่งเพียงครั้งเดียว และ `--endpoint-url` เพื่อใช้ WebSocket RPC ของคุณเอง

## จัดการ Webhook

| คำสั่ง | สิ่งที่ทำ |
| --- | --- |
| `erpc webhook list` | แสดงรายการ subscription ที่บันทึกไว้ |
| `erpc webhook show ID` | แสดง subscription หนึ่งรายการ โดยไม่แสดงข้อมูลรับรองของ callback |
| `erpc webhook enabled-count` | นับ subscription ที่เปิดใช้งานอยู่บนเครื่องนี้ |
| `erpc webhook pause ID` | ปิดการส่ง และ runner ที่กำลังทำงานอยู่จะจบการทำงาน |
| `erpc webhook activate ID` | เปิดให้ `run` ครั้งต่อไปทำงานได้ |
| `erpc webhook delete ID` | ลบนิยามนั้น |

คำสั่งเหล่านี้ตรวจสอบและเปลี่ยนแปลงเฉพาะการกำหนดค่าในเครื่องเท่านั้น ในสคริปต์ ให้ส่ง `--yes` ให้กับ `pause`, `activate` และ `delete`
