วิธีที่ 2: SIP Registration
หลักการทำงาน
Ingfah SIP Server จะทำตัวเป็น SIP client ที่ลงทะเบียน (REGISTER) กับ SIP server ของลูกค้าโดยอัตโนมัติ เมื่อมีสายเข้ามาที่ DID ระบบของลูกค้าจะส่ง INVITE มาที่ Ingfah SIP Server ผ่าน registration session ที่ active อยู่ วิธีนี้เหมาะกับ PBX ทั่วไปที่ไม่มี public static IP
การลงทะเบียน (Background session)
sequenceDiagram
box rgba(43,127,255,0.1) Ingfah
participant SBC as Ingfah SIP Server
end
participant Server as SIP Server ลูกค้า
SBC->>Server: REGISTER (user/pass)
Server-->>SBC: 200 OK
loop keep-alive ทุก 20 วินาที
Server->>SBC: OPTIONS
SBC-->>Server: 200 OK
end
สายเข้า (Inbound)
sequenceDiagram
actor Caller as ผู้โทร
participant PBX as PBX ลูกค้า
box rgba(43,127,255,0.1) Ingfah
participant SBC as Ingfah SIP Server
participant AI as Ingfah
end
Caller->>PBX: โทรเข้า DID
PBX->>SBC: INVITE (ผ่าน registration session ที่ active)
SBC->>AI: ส่งสายต่อ
สายออก (Outbound)
sequenceDiagram
box rgba(43,127,255,0.1) Ingfah
participant AI as Ingfah
participant SBC as Ingfah SIP Server
end
participant Proxy as Outbound Proxy
participant PBX as PBX ลูกค้า
participant PSTN as PSTN
AI->>SBC: เริ่มโทรออก
SBC->>Proxy: INVITE + auth (credentials เดียวกับ REGISTER)
Proxy->>PBX: ส่งสายต่อ
PBX->>PSTN: ส่งออก PSTN
ข้อมูลที่ต้องเตรียม
| ฟิลด์ | จำเป็น | คำอธิบาย | ตัวอย่าง / default |
|---|---|---|---|
name | ✓ | ชื่อย่อใช้แทน trunk นี้ (ตัวอักษรอังกฤษ ไม่มีช่องว่าง) | "abc-corp" |
server | ✓ | SIP registrar — IP สาธารณะหรือ FQDN | "sip.example.com" |
proxy | — | Outbound proxy (ระบุเฉพาะถ้าต่างจาก server) | default = server |
port | — | SIP signaling port | default 5060 |
transport | — | "udp" หรือ "tls" (ปลอดภัยกว่า ต้องใช้ cert) | default "udp" |
codec | — | Array ของ codec ตามลำดับ: ["g722","ulaw"] (แนะนำ) หรือ ["ulaw"] | default ["g722","ulaw"] |
sip_user | ✓ | SIP identity — ที่ Ingfah ใช้ register (From:, Contact:, registration URI) | "020256960" หรือ "101" |
auth_user | — | Username ใน Authorization header (ระบุเฉพาะถ้าต่างจาก sip_user เช่น MS Teams) | default = sip_user |
password | ✓ | SIP password คู่กับ auth_user | — |
number | — | หมายเลข PSTN หรือ extension; routing key สำหรับโทรออก ถ้าต่างจาก sip_user ให้ระบุ | default = sip_user |
direction | — | "inbound", "outbound", หรือ "both" | default "both" |
สิ่งที่ลูกค้าต้องทำในระบบของตน
- สร้าง SIP Extension / Trunk Account สำหรับ Ingfah SIP Server พร้อม username + password
- อนุญาตให้ลงทะเบียนจาก Ingfah SIP Server IP (ดู endpoint ที่ทีมงานส่งให้) ถ้าระบบจำกัด IP
- ตั้ง Inbound Routing ให้สายที่เข้ามาที่ DID route ไปที่ extension นี้
- หากระบบมี NAT: ตรวจสอบว่า
Contactheader ส่งเป็น IP สาธารณะ
แบบฟอร์มเชื่อมต่อ
กรุณา copy ฟอร์มด้านล่าง กรอกข้อมูลให้ครบ แล้วส่งกลับให้ทีมงาน
========== SIP REGISTRATION TRUNK ==========ชื่อบริษัท/โครงการ : ____________________ผู้ติดต่อ : ____________________อีเมล / เบอร์โทร : ____________________
[ข้อมูลทางเทคนิค]name : ____________________ (ชื่อย่อ ภาษาอังกฤษ)server : ____________________ (SIP registrar — host / IP)proxy : ____________________ (ระบุเฉพาะถ้าต่างจาก server)port : ____________________ (default 5060)transport : [ ] udp [ ] tlscodec : [ ] g722 (แนะนำ) [ ] ulawsip_user : ____________________ (SIP identity — ที่ Ingfah ใช้ register)auth_user : ____________________ (ระบุเฉพาะถ้าต่างจาก sip_user)password : ____________________number : ____________________ (ระบุเฉพาะถ้าต่างจาก sip_user)
[ทิศทางการใช้งาน]direction : [ ] inbound [ ] outbound [ ] both (default)
[ฝั่งลูกค้า checklist][ ] สร้าง SIP account แล้ว ทดสอบ login ผ่าน softphone ได้[ ] อนุญาต register จาก Ingfah SIP Server IP[ ] ตั้ง inbound route ของ DID ไปยัง extension นี้