ThunderPhone 2.0 เปิดให้ใช้งานแล้วเริ่มใช้งานได้ด้วยตัวเอง ราคาเริ่มต้น 2 เซนต์ต่อนาที.อ่านประกาศเปิดตัว

Developer cookbook

จัดการสายเรียกเข้า (API)

ครบวงจร: กำหนดค่าเอเจนต์ กำหนดเอเจนต์ให้กับหมายเลขโทรศัพท์ รับสาย และตรวจสอบบันทึกการสนทนา

ขั้นตอนมาตรฐานสำหรับ “รับสายด้วย AI” จากเทอร์มินัลของคุณ คุณจะดำเนินการดังนี้:

  1. สร้างเอเจนต์พร้อมพรอมป์ต์และเสียง
  2. จัดเตรียม (หรือนำเข้า) หมายเลขโทรศัพท์ และกำหนดเอเจนต์เป็น ตัวจัดการสายเรียกเข้า
  3. โทรไปยังหมายเลข ดูบันทึกการโทร ทรานสคริปต์ และไฟล์บันทึกเสียง

จำนวนการเรียก API ทั้งหมด: สี่ครั้ง เวลารวม: น้อยกว่าห้านาที

1. สร้างเอเจนต์

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

curl -X POST https://api.thunderphone.com/v1/agents \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":    "Acme Support",
    "prompt":  "You are a friendly support agent for Acme. Help callers with orders and returns. Keep answers short.",
    "voice":   "john",
    "product": "spark"
  }'

บันทึก id ที่ส่งกลับ — คุณจะต้องใช้ในขั้นตอนที่ 2

2. รับหมายเลขโทรศัพท์

หากคุณเพียงต้องการหมายเลขสำหรับโทรทดสอบ ให้รับหมายเลข ThunderPhone จากพูลของ ThunderPhone:

curl -X POST https://api.thunderphone.com/v1/phone-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"area_code": "415"}'

การตอบกลับมี id และ number ในรูปแบบ E.164 หมายเลข ThunderPhone เริ่มต้นด้วย status="provisioning" และจะเปลี่ยนเป็น active ภายในไม่กี่ วินาที — โพล GET /v1/phone-numbers/{id} เพื่อติดตามการเปลี่ยนสถานะหากคุณต้องการ

3. กำหนดเอเจนต์

เชื่อมโยงเอเจนต์จากขั้นตอนที่ 1 กับทิศทางสายเรียกเข้าของหมายเลข:

curl -X PATCH https://api.thunderphone.com/v1/phone-numbers/{phone_id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"inbound_agent_id": 12}'

เพียงเท่านี้ — หมายเลขพร้อมใช้งานแล้ว หลังจากองค์กรของคุณได้รับอนุมัติให้ โทรออก คุณยังสามารถตั้งค่า outbound_agent_id ใน PATCH เดียวกันได้ จนกว่าจะถึงตอนนั้น API จะปฏิเสธการกำหนดนี้ด้วย 400

หากคุณกำหนดเส้นทางสายเรียกเข้า ผ่าน config webhook แทน inbound_agent_id แบบคงที่ ตอนนี้ webhook นั้นสามารถส่งคืน timezone รายสาย พร้อมกับ agent_id และ variables ได้

4. รับสาย

โทรไปยังหมายเลขจากโทรศัพท์ของคุณ เอเจนต์จะรับสาย แนะนำตัวตาม พรอมป์ต์ของคุณ และเริ่มการสนทนา

ระหว่างที่สายกำลังดำเนินอยู่ สายจะแสดงใน GET /v1/calls พร้อม status="in_progress" เมื่อสายสิ้นสุด ระเบียนจะอัปเดตด้วย end_reason, duration_seconds, billable_minutes และ (ในภายหลัง) URL ของไฟล์บันทึกเสียงและคะแนนประเมินจาก AI

สายเรียกเข้าจะนับรวมใน ขีดจำกัดการโทรพร้อมกันขององค์กร (ค่าเริ่มต้นคือสายที่กำลังดำเนินอยู่ 20 สาย โดยใช้ร่วมกับสายโทรออก สายเว็บ และสายทดสอบ) สายที่เข้ามาเมื่อถึงขีดจำกัดจะถูกปฏิเสธก่อนที่เอเจนต์จะรับสายและถูกวางสาย จะไม่ถูกเรียกเก็บเงิน และจะบันทึกเป็นสายที่ล้มเหลวโดยมีเหตุผลการสิ้นสุดเป็น concurrent_call_limit_reached ส่งอีเมลถึง support@thunderphone.com หากต้องการขีดจำกัดที่สูงขึ้น

5. ตรวจสอบผลลัพธ์

ดึงรายการสายล่าสุด:

curl 'https://api.thunderphone.com/v1/calls?limit=5' \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

ดึงบทสนทนา:

curl https://api.thunderphone.com/v1/calls/{call_id}/transcript \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

และ URL ของไฟล์บันทึกเสียง (ลงนามและมีอายุสั้น):

curl https://api.thunderphone.com/v1/calls/{call_id}/audio \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

หากคุณสมัครรับ เว็บฮุก telephony.complete คุณจะได้รับข้อมูลเดียวกันในรูปแบบ POST ไปยังเซิร์ฟเวอร์ของคุณ — ดู call.complete

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


ขั้นตอนถัดไป