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

Developer cookbook

เชื่อมต่อผ่าน SIP (ไม่ต้องใช้หมายเลขโทรศัพท์)

ส่งสายไปยังเอเจนต์ ThunderPhone โดยตรงจาก PBX ผู้ให้บริการเครือข่าย หรือแอปพลิเคชัน SIP ของคุณ ด้วย SIP URI แบบใช้ครั้งเดียวต่อการโทร หรือที่อยู่ SIP แบบถาวร

หากระบบของคุณจัดการหมายเลขโทรศัพท์อยู่แล้ว (เช่น PBX แพลตฟอร์มคอนแทคเซ็นเตอร์ หรือบัญชีผู้ให้บริการที่คุณหมุนเวียนหมายเลข) คุณสามารถส่งสายไปยังเอเจนต์ ThunderPhone ผ่าน SIP มาตรฐานได้ คุณไม่ต้องนำเข้าหรือซื้อหมายเลขบน ThunderPhone ระบบของคุณโทรไปยังที่อยู่ SIP แล้วเอเจนต์จะรับสาย

ที่อยู่ SIP มีสองประเภท:

SIP URI ต่อสายปลายทาง SIP
มีลักษณะเป็นsip:c-<token>@sip.thunderphone.comsip:agent-<id>-<letters>@sip.thunderphone.com
สร้างด้วยPOST /v1/calls/register-sip หนึ่งครั้งต่อสายPOST /v1/sip-endpoints หนึ่งครั้ง
การยืนยันตัวตนโทเค็นใช้ครั้งเดียวในที่อยู่ชื่อผู้ใช้ + รหัสผ่าน SIP digest (และรายการอนุญาต IP ต้นทางเพิ่มเติมได้)
เหมาะสำหรับแอปที่เรียก API อยู่แล้วก่อนโอนสาย ตัวแปรต่อสายPBX และผู้ให้บริการที่ควรเพียง "ชี้ทรังก์" ไปที่ ThunderPhone
ใช้ได้เป็นเวลา5 นาที หนึ่งสายจนกว่าคุณจะลบ

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

SIP URI ต่อสาย

1. ลงทะเบียนสาย

curl -X POST https://api.thunderphone.com/v1/calls/register-sip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": 12,
    "to_number": "+14155550142",
    "variables": {"customer_name": "Ada"}
  }'
{
  "call_id": 862197007562,
  "sip_uri": "sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com",
  "expires_at": "2026-09-25T21:49:52Z",
  "agent_id": 12,
  "to_number": "+14155550142"
}
  • to_number (ไม่บังคับ) คือหมายเลขที่ผู้โทรโทรเข้ามาทางฝั่งของคุณ ระบบจะบันทึกเป็นปลายทางของสายในประวัติการโทร และเอเจนต์จะเห็นเป็นหมายเลขของตนเอง
  • variables (ไม่บังคับ) ใช้เติม {{placeholders}} ในพรอมป์ต์ของเอเจนต์ เช่นเดียวกับ การโทรออก
  • call_id คือ id ที่สายจะมีในประวัติการโทร (GET /v1/calls/{call_id}) เมื่อเชื่อมต่อแล้ว

2. โทรไปยัง URI

ส่งสายไปยัง sip_uri ภายใน 5 นาที URI ใช้ได้สำหรับหนึ่งสายเท่านั้น: เมื่อสายใดใช้แล้ว URI จะถูกใช้หมด แม้ว่าสายนั้นจะสิ้นสุดลงอย่างรวดเร็ว

ตัวอย่างเช่น เมื่อใช้ Twilio ให้ส่งคืน TwiML นี้สำหรับสายที่คุณต้องการส่งต่อ:

<Response>
  <Dial>
    <Sip>sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com;transport=tcp</Sip>
  </Dial>
</Response>

จาก PBX ให้โทรไปยัง URI ในฐานะปลายทาง SIP ไม่ต้องใช้ชื่อผู้ใช้หรือรหัสผ่าน โทเค็นคือข้อมูลรับรอง ดังนั้นให้ปฏิบัติต่อ URI เสมือนเป็นรหัสผ่านจนกว่าจะถูกใช้งาน

เอนด์พอยต์ SIP (ที่อยู่ถาวร)

1. สร้างเอนด์พอยต์

curl -X POST https://api.thunderphone.com/v1/sip-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": 12, "name": "Main PBX"}'
{
  "id": 7,
  "name": "Main PBX",
  "agent_id": 12,
  "sip_uri": "sip:agent-12-jhxmginwjx@sip.thunderphone.com",
  "username": "tp409667538f83",
  "password": "8mJ0…",
  "allowed_source_cidrs": [],
  "status": "active",
  "created_at": "2026-09-25T21:46:18Z"
}

2. ตั้งค่าระบบให้ชี้ไปยังเอนด์พอยต์

กำหนดค่า SIP trunk หรือปลายทางด้วย:

การตั้งค่าค่า
SIP URIsip_uri ของเอนด์พอยต์
ชื่อผู้ใช้ / รหัสผ่านusername / password (การยืนยันตัวตนแบบ digest; ThunderPhone จะท้าทายการโทรแต่ละครั้ง)
การรับส่งข้อมูลTCP บนพอร์ต 5060 หรือ TLS บนพอร์ต 5061 (แนะนำ) หรือ UDP บนพอร์ต 5060
โคเดกG.711 (PCMU/PCMA) หรือ G.722

การตั้งค่าการรับส่งข้อมูลและโคเดกเหล่านี้ใช้กับ URI ต่อสายด้วย รายละเอียดเครือข่าย 2 ข้อมีความสำคัญสำหรับที่อยู่ทั้งสองประเภท:

  • ทำตาม Record-Route หลังจาก INVITE แรก สัญญาณส่วนที่เหลือของสาย (ACK การวางสาย การโอนสาย) จะส่งไปยังเซิร์ฟเวอร์ ThunderPhone เฉพาะที่ ตอบรับสาย ซึ่งระบุอยู่ในส่วนหัว Record-Route (sip-1.thunderphone.com หรือ sip-2.thunderphone.com หรือที่อยู่ IP ของเซิร์ฟเวอร์) หากคุณจำกัด SIP ขาออก ให้อนุญาตโฮสต์เหล่านั้นร่วมกับ sip.thunderphone.com: 172.170.39.202 (sip), 13.86.104.121 (sip-1) และ 20.80.98.90 (sip-2)
  • เสียงส่งไปที่อื่น sip.thunderphone.com ใช้สำหรับส่งสัญญาณเท่านั้น อนุญาตสื่อ (RTP) ไปยังที่อยู่และพอร์ตในคำตอบ SDP

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

ส่งหมายเลขที่โทรเข้า (ไม่บังคับ)

หากต้องการบันทึกว่าผู้โทรโทรไปยังหมายเลขใดของคุณ ให้ส่งหมายเลขนั้นใน INVITE ผ่าน ส่วนหัว X-Original-To (ตัวอย่างเช่น X-Original-To: +14155550142) หรือผ่าน ส่วนหัวมาตรฐาน Diversion ThunderPhone จะจัดเก็บเป็นปลายทางของสาย

ระบบจะเลือกปลายทางตามลำดับนี้: to_number ที่ระบุเมื่อลงทะเบียน URI ต่อสาย จากนั้นคือหมายเลขใน X-Original-To แล้วจึงเป็นหมายเลขใน Diversion หากไม่มีรายการใดระบุหมายเลข ระบบจะแสดงเป็น sip:agent-12-jhxmginwjx (ที่อยู่ของ เอนด์พอยต์) สำหรับเอนด์พอยต์ หรือ sip:call สำหรับ URI ต่อสาย

เมื่อใช้ Twilio คุณสามารถเพิ่มส่วนหัวลงใน SIP URI: sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tcp?X-Original-To=%2B14155550142

จำกัด IP ต้นทาง (ไม่บังคับ)

ตั้งค่า allowed_source_cidrs เพื่อรับสายจากที่อยู่ส่งสัญญาณของคุณเท่านั้น นอกเหนือจากชื่อผู้ใช้และรหัสผ่าน:

curl -X PATCH https://api.thunderphone.com/v1/sip-endpoints/7 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"allowed_source_cidrs": ["203.0.113.0/28"]}'

ระบบจะปฏิเสธสายจากที่อยู่อื่นทั้งหมดก่อนที่จะถึงเอเจนต์ ใช้ที่อยู่ที่ระบบของคุณส่ง สัญญาณ SIP ออกมา (สำหรับผู้ให้บริการ เช่น Twilio ให้ใช้ช่วง IP สัญญาณที่เผยแพร่ไว้) ไม่ใช่ที่อยู่สื่อของคุณ

สิ่งที่ผู้โทรและระบบของคุณเห็น

  • หมายเลขผู้โทร: ส่วนผู้ใช้ของส่วนหัว From จะถูกจัดเก็บเป็นผู้โทร หมายเลขโทรศัพท์ (ตัวเลข โดยอาจมี + ช่องว่าง ขีด จุด หรือ วงเล็บ) จะถูกปรับรูปแบบเป็น E.164 ส่วนค่าอื่น เช่น ชื่อผู้ใช้ SIP จะ ถูกเก็บไว้ตามที่ส่งมา ระบบจะเก็บไว้สูงสุด 32 อักขระ และผู้โทรที่ไม่มีค่าจะถูกจัดเก็บเป็น anonymous
  • สายที่ถูกปฏิเสธ: URI ต่อสายที่ไม่รู้จักหรือหมดอายุจะได้รับ SIP 404 Not Found URI ต่อสายที่ถูกใช้ไปแล้ว ปลายทางที่ปิดใช้งาน หรือ แหล่งที่มาอยู่นอก allowlist (รวมถึงสาย UDP ใดๆ ไปยังปลายทางที่มี allowlist) จะถูกตัดการเชื่อมต่อก่อนที่เอเจนต์จะเริ่มทำงาน: ระบบของคุณอาจเห็นว่า สายล้มเหลว หรือเชื่อมต่อแล้วสิ้นสุดทันที การปฏิเสธเหล่านี้จะไม่ สร้างรายการในประวัติการโทร หากองค์กรของคุณมีเครดิตไม่เพียงพอหรือ ถึงขีดจำกัดการใช้จ่ายแล้ว สายจะถูกปฏิเสธและแสดงในประวัติการโทรเป็น สายที่ล้มเหลวโดยไม่มีค่าใช้จ่าย หากต้องการลองทำรายการต่อสายอีกครั้ง ให้ลงทะเบียน URI ใหม่
  • การโอนสาย: การโอนสายแบบ cold ของเอเจนต์ใช้งานได้ (ThunderPhone ส่ง SIP REFER ซึ่งระบบของคุณต้องยอมรับ) การโอนสายแบบ warm ไม่พร้อมใช้งานสำหรับสายไปยังที่อยู่ SIP เนื่องจากไม่มีหมายเลข ThunderPhone ที่จะแสดงเป็นหมายเลขผู้โทรสำหรับช่วงสายที่สอง เมื่อใช้ Twilio นั้น TwiML ข้างต้นจะเชื่อมต่อเอเจนต์ แต่ ไม่จัดการการโอนสาย: เพิ่ม referUrl="https://YOUR_SERVER/sip-transfer" ไปยัง <Dial> และให้ webhook นั้นอ่าน ReferTransferTarget แล้วส่งกลับ TwiML ที่โทรไปยังปลายทางการโอนสาย (ดู คู่มือ SIP REFER ของ Twilio)
  • ข้อความ: ที่อยู่ SIP และหมายเลขที่โทรออกไม่สามารถส่งข้อความได้ เอเจนต์สามารถส่งข้อความระหว่างสายไปยังที่อยู่ SIP ได้ก็ต่อเมื่อได้ตั้งค่า หมายเลขที่รองรับ SMS แยกต่างหากสำหรับส่งข้อความแล้ว มิฉะนั้นเครื่องมือ SMS ของเอเจนต์จะ ใช้งานไม่ได้
  • การลงทะเบียน: ThunderPhone ไม่รับ SIP REGISTER ให้ส่งสายไปยัง ที่อยู่ ไม่ต้องลงทะเบียนกับที่อยู่นั้น

ราคา

สายไปยังที่อยู่ SIP จะคิดค่าบริการตามอัตราต่อนาทีปกติของเอเจนต์ ไม่มี ค่าหมายเลขโทรศัพท์ เนื่องจากไม่มีหมายเลข ThunderPhone ที่รองรับสาย ผู้ให้บริการของคุณเอง จะเรียกเก็บค่าบริการฝั่งของตนตามปกติ ดู ราคา

ทดสอบ

  1. สร้าง URI ต่อสายหรือปลายทางตามที่อธิบายข้างต้น
  2. โทรจากระบบของคุณ หรือจาก SIP softphone ใดก็ได้ (สำหรับปลายทาง ให้ป้อน ชื่อผู้ใช้และรหัสผ่าน)
  3. หลังวางสาย ให้เปิดสายดังกล่าวใน สาย ในแดชบอร์ด หรือดึงข้อมูลด้วย GET /v1/calls/{call_id} ระบบจะแสดงผู้โทร ปลายทาง (ดูลำดับใน "ส่งหมายเลขที่โทรออก") และบันทึกการสนทนา

รายละเอียด API: ข้อมูลอ้างอิง API สำหรับที่อยู่ SIP.