---
title: "ThunderPhone CLI"
description: "เข้าสู่ระบบ จัดการเอเจนต์เสียงและการโทร กำหนดค่าไคลเอนต์ MCP และสร้างโครงร่างโปรเจ็กต์จากเทอร์มินัล"
---

CLI ต้องใช้ Node.js 18.18 หรือใหม่กว่า เรียกใช้ด้วย `npx` หรือติดตั้งแบบโกลบอล:

```bash
npm install -g thunderphone
thunderphone --help
```

## เข้าสู่ระบบ

```bash
npx thunderphone login
thunderphone whoami --json
```

การเข้าสู่ระบบจะแสดงรหัสยืนยัน เปิดเบราว์เซอร์ และรอการอนุญาต
ใช้ `--no-browser` บนเครื่องแบบไม่มีหน้าจอ และเปิด URL ที่แสดงไว้จากที่อื่น
การเข้าสู่ระบบอุปกรณ์ต้องอาศัยการเปิดใช้ OAuth device flow ของ API คีย์ API ขององค์กรใน `THUNDERPHONE_API_KEY` ยังสามารถใช้ยืนยันคำสั่งได้ และมีลำดับความสำคัญเหนือข้อมูลรับรองการเข้าสู่ระบบที่จัดเก็บไว้

ข้อมูลรับรองจะจัดเก็บแยกตามโปรไฟล์ใน `~/.config/thunderphone/credentials.json`
ด้วยโหมดไฟล์ `0600` โดย `XDG_CONFIG_HOME` และ `THUNDERPHONE_CONFIG_DIR` จะแทนที่ไดเรกทอรี
โทเค็นการเข้าถึงจะรีเฟรชโดยอัตโนมัติ และโทเค็นรีเฟรชแบบหมุนเวียนจะถูกบันทึกแบบอะตอมมิก ระบบจะไม่แสดงโทเค็นระหว่างการเข้าสู่ระบบ

```bash
thunderphone login --profile work
thunderphone agents list --profile work --json
thunderphone logout --profile work
```

`THUNDERPHONE_PROFILE` กำหนดโปรไฟล์เริ่มต้น การออกจากระบบจะลบข้อมูลรับรองในเครื่อง
แต่จะไม่เพิกถอนการอนุญาตบนเซิร์ฟเวอร์ API เริ่มต้นคือ `https://api.thunderphone.com`
ใช้ `--api-base-url` หรือ `THUNDERPHONE_API_BASE_URL` สำหรับ API อื่น โทเค็นของโปรไฟล์
ไม่สามารถส่งไปยัง URL ของ API ที่กำหนดค่าไว้ต่างกันได้ ให้เข้าสู่ระบบ URL นั้นด้วยโปรไฟล์แยกต่างหาก

## คำสั่ง

ทุกคำสั่งรองรับ `--json` ข้อมูลที่สำเร็จจะส่งไปยัง stdout ส่วนข้อผิดพลาดจะส่งไปยัง stderr
พร้อมรหัสออกที่ไม่เป็นศูนย์ หากไม่ใช้ `--json` เอาต์พุตจะเป็นตารางหรือรายการฟิลด์แบบกระชับ
JSON จะคงโครงสร้างการตอบกลับของ API โดยปกปิดฟิลด์ข้อมูลรับรอง การให้บริการ MCP
จะสงวน stdout ไว้สำหรับโพรโทคอล MCP

| คำสั่ง | วัตถุประสงค์ |
| --- | --- |
| `login [--no-browser] [--scope "scopes"]` | อนุญาตผ่านรหัสอุปกรณ์ |
| `logout`, `whoami` | ลบข้อมูลรับรองในเครื่อง; แสดงรายการองค์กรที่เข้าถึงได้ |
| `agents list`, `agents get ID` | อ่านข้อมูลเอเจนต์ |
| `agents create --file agent.json` | สร้างเอเจนต์ |
| `agents update ID --file agent.json` | บันทึกฉบับร่างเอเจนต์ |
| `agents deploy ID`, `agents delete ID` | ปรับใช้ฉบับร่าง; ลบเอเจนต์ |
| `numbers list` | อ่านข้อมูลหมายเลขโทรศัพท์ |
| `numbers provision --country US --area-code 415` | จัดเตรียมหมายเลขขาเข้าของสหรัฐอเมริกา |
| `numbers assign NUMBER_ID --agent ID` | กำหนดเอเจนต์ขาเข้า |
| `call TO --agent ID --from FROM [--wait]` | โทรออก; เลือกรอทรานสคริปต์ได้ |
| `calls list [--limit N] [--agent ID]` | แสดงรายการสาย (จำกัด 1–200) |
| `calls get ID`, `calls transcript ID` | อ่านข้อมูลสายหนึ่งหรือทรานสคริปต์ |
| `test run AGENT_ID [--scenario ID] --consent-to-charge` | เรียกใช้สถานการณ์ที่บันทึกไว้และมีค่าใช้จ่ายผ่านช่องทางเว็บ |
| `test status RUN_ID [--agent ID]` | ตรวจสอบแบตช์ พร้อมรายละเอียดสถานการณ์เมื่อระบุเอเจนต์ |
| `import VENDOR export.json` | เตรียมการนำเข้า JSON จากผู้ให้บริการเพื่อตรวจสอบ |
| `imports get UUID`, `imports commit UUID` | ตรวจสอบการนำเข้า; ยืนยันเอเจนต์ที่เลือกหลังตรวจสอบ |
| `mcp setup`, `mcp serve` | กำหนดค่าไคลเอ็นต์; เริ่มสะพาน stdio |
| `init [directory]` | สร้างโครงร่างโปรเจกต์ |

การโทรออกต้องมีหมายเลขผู้ให้บริการที่เชื่อมต่ออยู่ `THUNDERPHONE_FROM_NUMBER` สามารถ
ระบุค่าให้ `--from` ได้ หมายเลขที่ ThunderPhone จัดเตรียมให้ใช้สำหรับสายเข้าเท่านั้น `--wait` มีค่าเริ่มต้น
เป็นหมดเวลาหนึ่งชั่วโมง ตั้งค่า `--timeout SECONDS` เพื่อเปลี่ยนแปลง การหมดเวลาจะหยุดการรอ
โดยไม่วางสาย

การนำเข้ารองรับ `vapi`, `retell`, `elevenlabs` และ `bland` อาร์กิวเมนต์ที่สองคือ
พาธไปยังไฟล์ส่งออก JSON ของผู้ให้บริการ ไม่ใช่ ID ระยะไกลของผู้ให้บริการ API จะเตรียมการแมป
แบบอะซิงโครนัส ให้ตรวจสอบด้วย `imports get UUID` และยืนยันหลังจากพร้อมแล้วเท่านั้น
และหลังจากที่คุณตรวจสอบฟิลด์ที่แมปและคำเตือนแล้ว ดู [การนำเข้าเอเจนต์](/th/guides/import-agents)

## การตั้งค่า MCP

```bash
thunderphone mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client codex --scope user --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client claude-desktop --scope user
```

ไคลเอนต์ ได้แก่ `claude-code`, `codex`, `cursor`, `vscode`, `gemini`, `claude-desktop` และ
`windsurf` ขอบเขตโปรเจ็กต์เป็นค่าเริ่มต้น Desktop และ Windsurf ต้องใช้ขอบเขตผู้ใช้
ละเว้น `--client` เพื่อตรวจหาไคลเอนต์เดียวจากโปรเจ็กต์ การตรวจหาที่กำกวม
จะแสดงพรอมป์แบบโต้ตอบ หรือล้มเหลวพร้อมคำแนะนำในเซสชันแบบไม่โต้ตอบ
การตั้งค่าจะแสดงไฟล์ที่เขียนและคงเซิร์ฟเวอร์ที่ไม่เกี่ยวข้องไว้ JSON ที่มีอยู่
ต้องเป็น JSON แบบเคร่งครัดที่ถูกต้อง ค่า TOML ของ Codex จะถูกเก็บไว้ แต่ความคิดเห็นอาจถูกจัดรูปแบบใหม่

การตั้งค่าจะเลือกใช้ remote HTTP โดยตรงก่อน เมื่อใช้ `--api-key-env` ระบบจะเขียน
การอ้างอิงตัวแปร ไม่เขียนคีย์ หากไม่มีตัวเลือกนี้ HTTP โดยตรงจะอาศัยการรองรับ
OAuth ของไคลเอนต์ และจะไม่ใช้ไฟล์ข้อมูลรับรองของ CLI หากต้องการใช้ข้อมูลรับรองจาก `thunderphone login`
ซ้ำในไคลเอนต์ใดก็ตามที่รองรับ stdio ให้ใช้:

```json
{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": ["-y", "@thunderphone/mcp"]
    }
  }
}
```

ตัวหุ้มจะตรวจสอบ `THUNDERPHONE_API_KEY` จากนั้นตรวจสอบโปรไฟล์ CLI ปัจจุบัน (รีเฟรช
เมื่อจำเป็น) แล้วมอบหมาย OAuth ให้ `mcp-remote` `THUNDERPHONE_MCP_URL` จะแทนที่
ปลายทาง ระบบไม่ส่ง telemetry การตั้งค่าแบบสแตนด์อโลนยังทำได้ผ่าน
`npx -y @thunderphone/mcp setup --client cursor` หรือ `thunderphone-mcp setup` หลังจาก
ติดตั้ง `@thunderphone/mcp` แบบโกลบอล

## สร้างโปรเจ็กต์

```bash
npx create-thunderphone-agent my-receptionist
npx create-thunderphone-agent my-outbound --template python --agent-type outbound
# Equivalent:
thunderphone init my-receptionist --template node --agent-type receptionist
```

เทมเพลตคือ `node` และ `python` ประเภทเอเจนต์คือ `receptionist`, `outbound` และ
`custom` เอเจนต์เริ่มต้นคือพนักงานต้อนรับคลินิกทันตกรรมภาษาอังกฤษ/สเปนที่มี
ข้อมูลเดโมระบุไว้อย่างชัดเจน โปรเจ็กต์ประกอบด้วย `agent.json`, สคริปต์ปรับใช้,
การกำหนดค่า MCP สำหรับ Claude Code, Cursor และ VS Code, คำสั่งสำหรับเอเจนต์,
`.env.example` และ README การสร้างโครงร่างทำงานแบบออฟไลน์และจะไม่เขียนทับไดเรกทอรีที่ไม่ว่าง

แก้ไขข้อมูลธุรกิจก่อนปรับใช้ ส่งออกคีย์ API หมายเลขผู้โทรที่เชื่อมต่อ
และผู้รับการทดสอบของคุณตามที่ระบุไว้ใน README ที่สร้างขึ้น `npm run deploy`
หรือ `python deploy.py` จะสร้างหรืออัปเดตเอเจนต์ ปรับใช้ฉบับร่าง และโทรทดสอบที่มีค่าใช้จ่าย
สคริปต์ใช้การยืนยันตัวตนด้วยคีย์ API ส่วน CLI และตัวหุ้ม MCP แบบ stdio
ยังรองรับการเข้าสู่ระบบด้วยอุปกรณ์ สคริปต์ Python ต้องใช้ Python 3.9 หรือใหม่กว่า
