---
title: "เครื่องมือในตัว"
description: "สั่งให้เอเจนต์ ThunderPhone วางสาย โอนสายผู้โทร กดเมนูโทรศัพท์ รอสาย ค้นหาความรู้ เล่นเสียง และส่งอีเมล"
---

เครื่องมือในตัวช่วยให้เอเจนต์ดำเนินการโทรทั่วไปได้โดยไม่ต้องเชื่อมต่อ API ของคุณเอง เครื่องมือส่วนใหญ่พร้อมใช้งานโดยอัตโนมัติ ส่วนอีเมล เสียง และการค้นหาความรู้จะแสดงขึ้นหลังจากที่คุณกำหนดค่าการตั้งค่าหรือแหล่งข้อมูลที่เกี่ยวข้องเท่านั้น บอกเอเจนต์ในพรอมป์ต์ว่าควรใช้แต่ละการดำเนินการเมื่อใด

| เครื่องมือ | ใช้สำหรับ | วิธีเปิดใช้งาน | การโทรที่รองรับ |
| --- | --- | --- | --- |
| `end_call` | จบการสนทนาที่เสร็จสิ้นแล้ว | พร้อมใช้งานเสมอ | โทรศัพท์ Talk ในเบราว์เซอร์ วิดเจ็ต การจำลอง และ Realtime |
| `transfer_call` | โอนสายผู้โทรทางโทรศัพท์ | กำหนดค่าการกำหนดเส้นทางในพรอมป์ต์ | การโทรศัพท์ทั่วไป; Realtime แบบอินไลน์ที่มี `call_events` สามารถใช้การโอนสายแบบ cold ได้ Realtime ของเอเจนต์ที่บันทึกไว้ไม่มีเครื่องมือนี้ |
| `send_keypad_input` | กดปุ่มในเมนูโทรศัพท์ | พร้อมใช้งานเสมอในการโทรศัพท์ทั่วไป | การโทรศัพท์; Realtime ขาออกแบบอินไลน์ที่มี `call_events` Realtime ของเอเจนต์ที่บันทึกไว้ไม่มีเครื่องมือนี้ |
| `no_response` | ฟังต่อขณะที่เมนูอัตโนมัติกำลังพูด | พร้อมใช้งานเสมอ | การโทรทุกประเภท |
| `wait_on_hold` | รออย่างเงียบ ๆ ให้บุคคลกลับมา | รวมอยู่ในการโทรขาออก | เซสชันโทรศัพท์ขาออกและ Realtime แบบอินไลน์ขาออก |
| `search_knowledge_base` | ตอบจากแหล่งข้อมูลที่แนบ | แนบความรู้กับเอเจนต์ | การโทรของเอเจนต์ที่บันทึกไว้พร้อมความรู้ที่แนบ |
| `play_sound` | เล่นเสียงแจ้งเตือนที่กำหนดค่าไว้ | **ขั้นสูง → เสียงเครื่องมือ** | การโทรของเอเจนต์ที่บันทึกไว้ |
| `send_email` | ส่งอีเมลถึงผู้รับคงที่หนึ่งราย | **ขั้นสูง → ส่งอีเมล** | การโทรของเอเจนต์ที่บันทึกไว้ |

## `end_call`

วางสายปัจจุบันเมื่อพรอมป์ต์สั่งให้โมเดลดำเนินการ เครื่องมือนี้พร้อมใช้งานโดยค่าเริ่มต้นและไม่มีการตั้งค่าเอเจนต์

เขียนเงื่อนไขและคำกล่าวลาที่จำเป็นไว้ในพรอมป์ต์:

```text
When the caller confirms they need nothing else, say goodbye and end the call.
```

การโทรทั่วไปที่โมเดลวางสายจะมี `end_reason: "ai_hangup"` การยุติเนื่องจากระยะเวลาหรือยอดคงเหลืออาจใช้เหตุผลการสิ้นสุดที่เฉพาะเจาะจงกว่าแทน

## `transfer_call`

โอนผู้โทรทางโทรศัพท์ไปยังหมายเลขคงที่ที่โมเดลระบุ การโอนสายแบบ cold จะเกิดขึ้นทันที การโอนสายแบบ warm ที่มีการคัดกรองจะโทรหาปลายทางเป็นการส่วนตัวก่อนเชื่อมต่อทั้งสองฝ่าย การโอนสายแบบ warm ต้องใช้หมายเลข VoIP ที่นำเข้าซึ่งยืนยันแล้วและสามารถโทรออกได้

ระบุหมายเลขปลายทางและเงื่อนไขการกำหนดเส้นทางที่แน่นอนไว้ในพรอมป์ต์:

```text
If the caller asks for billing, transfer them to +15551234567.
```

การโอนสายแบบ cold ที่สำเร็จจะมี `end_reason: "ai_transfer"`; การส่งต่อแบบ warm ที่เสร็จสมบูรณ์จะมี `end_reason: "ai_warm_transfer"` ความพยายามแบบ warm ที่ล้มเหลวจะคืนการควบคุมให้เอเจนต์ ดังนั้นการสิ้นสุดในภายหลังของสายจึงกำหนดเหตุผลการสิ้นสุด สำหรับเซสชันที่ไม่ใช่โทรศัพท์ คำขอโอนสายจะสิ้นสุดเซสชันแทน

ดู [การโอนสาย](/th/guides/call-transfers) สำหรับการตั้งค่าแดชบอร์ดและ API การกำหนดเส้นทาง การคัดกรอง การจัดการความล้มเหลว ข้อจำกัด และการทดสอบ

## `send_keypad_input`

ส่งตัวเลข DTMF (แป้นกดโทรศัพท์) `0`–`9`, `*` และ `#` ไปยังสายโทรศัพท์ โมเดลใช้เครื่องมือนี้เพื่อนำทาง IVR ซึ่งเป็นเมนูอัตโนมัติที่ขอให้ผู้โทรกดปุ่ม เครื่องมือนี้พร้อมใช้งานโดยค่าเริ่มต้นและไม่มีการตั้งค่าเอเจนต์

บอกโมเดลว่าเมนูใดที่สามารถนำทางได้ และค่าที่ร้องขอมาจากที่ใด อย่าขอให้โมเดลเดาตัวเลือกเมนู:

```text
Follow the phone menu for account status. Press a key only after the menu
states what that key does. Enter the account number supplied by the caller.
```

แพลตฟอร์มจะลบอักขระที่ไม่รองรับและส่งตัวเลขที่ถูกต้องตามลำดับ หากไม่มีตัวเลขที่ถูกต้องเหลืออยู่ หรือสายไม่สามารถส่งข้อมูลแป้นกดได้ ระบบจะส่งความล้มเหลวกลับไปยังเอเจนต์เพื่อให้กู้คืนการทำงานได้

## `no_response`

ทำให้เอเจนต์เงียบขณะที่ระบบอัตโนมัติยังคงพูด หรือเมื่อระบบขอให้ฟังต่อ เครื่องมือนี้ไม่ได้ใช้สำหรับการทักทายจากบุคคลจริง คำถาม หรือคิวพักสายจริง เครื่องมือนี้พร้อมใช้งานโดยค่าเริ่มต้นและไม่มีการตั้งค่าเอเจนต์

โดยทั่วไปคำอธิบายในตัวก็เพียงพอ สำหรับการโทรที่ใช้ IVR เป็นหลัก ให้เน้นขอบเขตไว้ในพรอมป์ต์:

```text
Stay silent while a phone menu is still speaking. Answer a live person as soon
as they address you.
```

การดำเนินการนี้จะไม่สิ้นสุดสาย

## `wait_on_hold`

ให้เอเจนต์โทรออกเข้าสู่สถานะพักสายแบบเงียบจนกว่าบุคคลจริงจะกลับมา
โมเดลจะใช้เครื่องมือนี้ก็ต่อเมื่ออีกฝ่ายระบุอย่างชัดเจนว่าเอเจนต์กำลังถูก
พักสาย เครื่องมือนี้พร้อมใช้งานโดยอัตโนมัติสำหรับการโทรออกและไม่มี
การตั้งค่าในแดชบอร์ด

```text
If a person explicitly puts you on hold, wait silently. When they return,
continue from the question you were discussing.
```

อย่าสั่งให้เอเจนต์ใช้เครื่องมือนี้สำหรับข้อความ "โปรดรอสักครู่" ของ IVR การพักสาย
มีระยะเวลาสูงสุด 15 นาทีโดยค่าเริ่มต้น สำหรับการโทรออกทั่วไป `POST /v1/call`
รองรับ `max_hold_seconds` ที่เป็นจำนวนเต็มบวก ส่วน Realtime แบบอินไลน์จำกัด
`max_hold_seconds` ไว้ที่ 10–900 วินาที หากบุคคลนั้น
กลับมา เอเจนต์จะสนทนาต่อโดยไม่เปลี่ยนเหตุผลการสิ้นสุดของสาย หากเกินขีดจำกัด
แพลตฟอร์มจะสิ้นสุดสายด้วย `end_reason: "ai_hangup"`.

## `search_knowledge_base`

ค้นหาเอกสารที่แนบกับเอเจนต์และส่งคืนข้อความส่วนที่เกี่ยวข้อง แนบ
ฐานความรู้หรือเอกสารความรู้แต่ละรายการเพื่อเปิดใช้ จากนั้นบอก
โมเดลว่าคำตอบใดต้องมาจากแหล่งข้อมูลเหล่านั้น:

```text
Search the knowledge base before answering policy questions. If the first
search is inconclusive, try once more with different key terms.
```

หากการค้นหาล้มเหลว ผลลัพธ์จะถูกส่งกลับไปยังเอเจนต์ ดู [ฐานความรู้](/th/guides/knowledge-base)
สำหรับการตั้งค่าแดชบอร์ดและ API

## `play_sound`

เล่นเสียงแจ้งเตือนที่กำหนดค่าไว้ของเอเจนต์หลังจากคำพูดใดก็ตามในเทิร์นเดียวกัน
ในแดชบอร์ด ให้ตั้งค่า **ขั้นสูง → เสียงเครื่องมือ** เป็น **Chime**, **Ding**
หรือ **Beep** จากนั้นปรับใช้เอเจนต์ **ไม่มี** จะลบเครื่องมือนี้ออก

ด้วย [Agents API](/api-reference/agents) ให้กำหนด `play_sound_asset` เป็น
`"chime"`, `"ding"` หรือ `"beep"` จากนั้นปรับใช้ กำหนดเป็น `""` เพื่อปิดใช้
เครื่องมือนี้

```text
After confirming that an appointment was saved, say "You're all set" and play
the notification sound.
```

ความล้มเหลวในการเล่นเสียงจะถูกส่งกลับไปยังเอเจนต์และจะไม่ทำให้สายสิ้นสุด

## `send_email`

ส่งอีเมลข้อความล้วนไปยังผู้รับหนึ่งรายที่เจ้าของเอเจนต์กำหนดค่าไว้
โมเดลจะระบุหัวเรื่องและเนื้อหา โดยจะไม่เห็นพารามิเตอร์ผู้รับ
และไม่สามารถเลือกหรือเปลี่ยนที่อยู่อีเมลได้

ในแดชบอร์ด ให้เปิดใช้ **ขั้นสูง → ส่งอีเมล** บันทึกที่อยู่ผู้รับ
จากนั้นปรับใช้เอเจนต์ ด้วย [Agents API](/api-reference/agents) ให้กำหนดทั้ง
`send_email_enabled: true` และ `send_email_recipient` ที่ไม่ว่าง จากนั้นปรับใช้
กำหนดเงื่อนไขการเรียกใช้และเนื้อหาที่ต้องมีในพรอมต์:

```text
When the caller asks to leave a message, collect their name, callback number,
and message. Read the details back for confirmation, then email them.
```

การโทรหนึ่งสายสามารถพยายามส่งอีเมลได้สูงสุดสามฉบับ หัวเรื่องแต่ละฉบับจำกัดที่ 300
อักขระ และเนื้อหาแต่ละฉบับจำกัดที่ 20,000 อักขระ การกำหนดค่าที่ขาดหาย เนื้อหาไม่ถูกต้อง
ขีดจำกัดต่อสาย และความล้มเหลวในการส่ง จะถูกส่งกลับไปยังเอเจนต์
การส่งที่ล้มเหลวยังคงนับเป็นหนึ่งในสามครั้งที่พยายามส่ง

ทดสอบกับผู้รับที่ควบคุมได้ก่อนปรับใช้ในวงกว้าง Browser Talk และ
การจำลองจะส่งอีเมลจริง ไม่มีโหมดทดสอบโดยไม่ส่งจริง

## หมายเหตุด้านความเข้ากันได้

การตั้งค่า **ขั้นสูง → การเปิดเผยข้อมูลที่ขัดจังหวะไม่ได้** และฟิลด์เดิม
`speak_uninterruptible_enabled` ยังคงมีไว้เพื่อความเข้ากันได้ แต่การเปิดใช้
ไม่มีผลใดๆ ปล่อยให้การตั้งค่านี้ปิดอยู่ ไม่มีพรอมต์ใดสามารถเปิดใช้เครื่องมือนี้ได้

สำหรับการเปิดเผยข้อมูลที่จำเป็นในช่วงเริ่มต้นสาย ให้ใช้ **ประกาศการยินยอม** ระบบจะเล่น
ตามข้อความที่กำหนดก่อนการสนทนาปกติและไม่สามารถขัดจังหวะได้ ดู [กฎหมายการยินยอมสำหรับการบันทึกสาย](/th/guides/recording-consent-laws)

## ทดสอบและตรวจสอบเครื่องมือในตัว

ใช้ Browser Talk หรือการจำลองเพื่อตรวจสอบพรอมต์ การค้นหาความรู้ เสียง
และอีเมล สภาพแวดล้อมเหล่านั้นไม่สามารถจำลองพฤติกรรมของเครือข่ายโทรศัพท์ได้ ทดสอบ
การนำทางด้วยแป้นกดและการพักสายในสายโทรออก และทดสอบการโอนสายแบบมีการแนะนำที่สมบูรณ์
ในการโทรจริงโดยใช้หมายเลข VoIP ที่นำเข้าและมีสิทธิ์รองรับ การรองรับ Realtime
มีข้อจำกัดตามที่แสดงในตารางด้านบน

## การโทร ราคา และเว็บฮุก

การดำเนินการในตัวไม่มีค่าธรรมเนียมเครื่องมือต่อการใช้งาน ยังคงมีค่าใช้จ่ายตามปกติสำหรับการโทรและผู้ให้บริการ โปรดดูที่ [ราคา](/th/guides/pricing) การโทรและผลลัพธ์ของการดำเนินการเหล่านี้อาจปรากฏในบทถอดเสียงที่เสร็จสมบูรณ์ แต่จะไม่ส่งเหตุการณ์ `telephony.tool` หรือ `web.tool` เหตุการณ์เหล่านั้นมีไว้สำหรับ[ฟังก์ชันที่ผู้ใช้กำหนด](/th/tools/overview) เฉพาะการวางสายหรือการโอนสายที่เสร็จสมบูรณ์เท่านั้นที่จะเปลี่ยน `end_reason` ของการโทร ความล้มเหลวอื่นๆ จะส่งกลับไปยังเอเจนต์ ดู[เว็บฮุกเมื่อเสร็จสิ้น](/th/webhooks/call-complete)สำหรับบันทึกการโทร
