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

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

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

| | **SIP URI ต่อสาย** | **ปลายทาง SIP** |
|---|---|---|
| มีลักษณะเป็น | `sip:c-<token>@sip.thunderphone.com` | `sip: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. ลงทะเบียนสาย

```bash
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"}
  }'
```

```json
{
  "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}}` ในพรอมป์ต์ของเอเจนต์ เช่นเดียวกับ [การโทรออก](/th/guides/call-variables)
- `call_id` คือ id ที่สายจะมีในประวัติการโทร (`GET /v1/calls/{call_id}`) เมื่อเชื่อมต่อแล้ว

### 2. โทรไปยัง URI

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

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

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

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

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

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

```bash
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"}'
```

```json
{
  "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"
}
```

<Warning>
  ระบบจะส่งคืน `password` เพียงครั้งเดียว เมื่อสร้างเอนด์พอยต์ จัดเก็บรหัสผ่านไว้
  ในการกำหนดค่า PBX หรือผู้ให้บริการของคุณทันที หากทำหาย ให้เปลี่ยนรหัสผ่านใหม่
  ด้วย `POST /v1/sip-endpoints/{id}/rotate-password`
</Warning>

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

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

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

<Note>
  ควรใช้ TCP หรือ TLS UDP ใช้งานได้จากที่อยู่สาธารณะและ NAT ส่วนใหญ่ แต่
  หากอยู่หลัง NAT แบบ "symmetric" (ที่ใช้พอร์ตใหม่สำหรับทุกปลายทาง) การวางสายและ
  การโอนสายของเอเจนต์อาจไปไม่ถึงระบบของคุณ รายการอนุญาต IP ต้นทาง
  (ด้านล่าง) ก็ต้องใช้ TCP หรือ TLS เช่นกัน เมื่อใช้ TLS สัญญาณ SIP จะยังคง
  เข้ารหัสหลังผ่าน `sip.thunderphone.com` ไปจนถึงเซิร์ฟเวอร์ที่จัดการสาย
</Note>

การตั้งค่าการรับส่งข้อมูลและโคเดกเหล่านี้ใช้กับ 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` เพื่อรับสายจากที่อยู่ส่งสัญญาณของคุณเท่านั้น
นอกเหนือจากชื่อผู้ใช้และรหัสผ่าน:

```bash
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 สัญญาณที่เผยแพร่ไว้)
ไม่ใช่ที่อยู่สื่อของคุณ

<Warning>
  ระบบจะตรวจสอบรายการอนุญาตสำหรับสายผ่าน TCP หรือ TLS เท่านั้น ที่อยู่ต้นทาง UDP
  สามารถปลอมแปลงได้ ดังนั้นเอนด์พอยต์ที่มีรายการอนุญาตจะปฏิเสธทุกสายที่มาถึงผ่าน UDP
  ส่งสายไปยังเอนด์พอยต์ด้วย `;transport=tcp` (พอร์ต 5060) หรือผ่าน
  TLS (พอร์ต 5061)
</Warning>

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

- **หมายเลขผู้โทร:** ส่วนผู้ใช้ของส่วนหัว `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](https://www.twilio.com/docs/voice/api/refer-to-twilio))
- **ข้อความ:** ที่อยู่ SIP และหมายเลขที่โทรออกไม่สามารถส่งข้อความได้
  เอเจนต์สามารถส่งข้อความระหว่างสายไปยังที่อยู่ SIP ได้ก็ต่อเมื่อได้ตั้งค่า
  หมายเลขที่รองรับ SMS แยกต่างหากสำหรับส่งข้อความแล้ว มิฉะนั้นเครื่องมือ SMS ของเอเจนต์จะ
  ใช้งานไม่ได้
- **การลงทะเบียน:** ThunderPhone ไม่รับ SIP `REGISTER` ให้ส่งสายไปยัง
  ที่อยู่ ไม่ต้องลงทะเบียนกับที่อยู่นั้น

## ราคา

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

## ทดสอบ

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

รายละเอียด API: [ข้อมูลอ้างอิง API สำหรับที่อยู่ SIP](/api-reference/sip-addresses).
