การเซ็ต Trunk แบบ SIP (SIP Trunk)

Elastix IP Pbx

Moderator: jubjang

การเซ็ต Trunk แบบ SIP (SIP Trunk)

โพสต์โดย jubjang » 18 ธ.ค. 2009 00:03

Trunk แบบ SIP (เรียกง่ายๆว่า SIP Trunk) นี้ปกติเราจะเอาไว้ให้ Elastix คุยกับ SIP VoIP Gateway, คุยกับ Elastix ตัวอื่นแบบ SIP หรือคุยกับ VoIP Operator ที่ให้บริการแบบ SIP เช่น TOT NetCall, TRUE NetTalk, EasyTalk เป็นต้น สรุปว่าถ้าต้องคุยกับภายนอกด้วย SIP แล้วหล่ะก็ ต้องเซ็ต SIP Trunk ครับ

Note! ก่อนทำการเซ็ตผมอยากให้ทำความเข้าใจ SIP Trunk ก่อนครับ

การเซ็ต Trunk แบบ SIP มีขั้นตอนดังต่อไปนี้ครับ

1. เข้าเมนูของ Elastix แล้วคลิ๊กที่แท๊ป "PBX" -> "PBX Configuration" -> "Trunks"
elastix-enter-to-trunks-small.png
Entering to Trunk Setup
elastix-enter-to-trunks-small.png (62.28 KiB) เปิดดู 19781 ครั้ง


2. คลิ๊กที่ Add SIP Trunk จะปรากฏข้อมูลดังรูป
elastix-sip-trunk-default.png
SIP Trunk Details
elastix-sip-trunk-default.png (38.25 KiB) เปิดดู 19781 ครั้ง

นำเมาส์ไปวางที่ชื่อพารามิเตอร์จะมี Help ปรากฏขึ้นมาครับ

Outbound Caller ID
เป็นเบอร์ Caller ID ที่จะส่งไปให้ผู้ให้บริการ ผู้ให้บริการอาจจะส่ง Caller ID นี้ไปยังเบอร์ปลายทาง หรือซ่อนไว้ หรือเปลี่ยนแปลงไปเป็นเบอร์อื่น รูปแบบการใส่คือ "callerid name" <callerid number> รวมเครื่องหมาย "" และ <> ด้วยนะครับ ยกตัวอย่างเช่น "kikka" <025022532> (เบอร์นี้เป็นเบอร์สมมตินะครับอย่าเอาไปโทรหล่ะเจ้าของเขาจะเดือดร้อน :D ) แต่ก็ไม่ใช่ว่าเวลาโชว์ที่เบอร์ปลายทางจะโชว์แบบนี้จริงๆ ขึ้นอยู่กับผู้ให้บริการด้วยว่าเขามีเงื่อนไขการให้บริการอย่างไร จะแสดงเบอร์ Caller ID ของลูกค้าตามที่คอนฟิกไว้ได้หรือไม่ แต่ส่วนใหญ่ผมขอบอกเลยว่าจะปิดหรือไม่ก็แปลงครับ เช่นส่งเบอร์แปลกๆโชว์แทน หรือไม่ก็ซ่อนเบอร์ไปเลย (ไม่โชว์เบอร์) หรือไม่ก็ส่งเบอร์ตามแอ๊คเค๊าท์

เมื่อยูสเซอร์โทรออกผ่านทาง Trunk นี้ค่า Caller ID Number, Caller ID Name ที่เราคอนฟิกไว้ในเบอร์ Extension ของยูสเซอร์ ก็จะถูกแทนที่ด้วยค่า Outbound Caller ID นี้ เว้นแต่เซ็ตพารามิเตอร์ Never Override Caller ID ครับ

Note!
1. นี่เป็นรายละเอียดของ Callerid Name, Callerid Number
2. ถ้าใส่ Oubound Caller ID แปลกๆหรือไม่ใช่ค่าที่ผู้ให้บริการกำหนดว่าให้เซ็ต (ส่วนมากผู้ให้บริการเขาไม่สนใจค่าตรงนี้ครับ เราเพียงคอนฟิกให้ถูกรูปแบบที่ Elastix กำหนดไว้ก็พอ) อาจโดนดร๊อปคอลได้นะครับ
3. เราอาจจะปล่อย "Outbound Caller ID" ว่างๆไว้ก็ได้ ซึ่ง Elastix จะใช้ Outbound Caller ID ตามที่คอนฟิกไว้ในเบอร์ Extension ของยูสเซอร์

Never Override Caller ID
ผู้ให้บริการบางรายจะดร๊อปคอลถ้าเราเซ็ต Caller ID ไม่ถูกต้อง เช่นปลอมเบอร์ Caller ID ของลูกค้ารายอื่น ให้เลือกพารามิเตอร์นี้เพื่อบอก Elastix ว่า
ไม่ให้ส่ง Caller ID ทีเซ็ตไว้ไม่ตรงกับค่าใน Outbound Caller ID ของ Trunk (ที่เรากำลังคอนฟิกอยู่นี้) หรือ Outbound Caller ID ของ Extensions
ซึ่งเราอาจจะเจอปัญหานี้ในตอนที่เซ็ตฟีเจอร์ Follow-Me หรือ Ring Groups แบบที่ใช้เบอร์จากภายนอก (เช่นเบอร์จาก PSTN หรือเบอร์ DID จาก SIP Trunk) แล้วไม่เวอร์คหรือทำงานไม่ถูกต้อง การเลือกออปชั่นนี้จะมีผลกระทบของการดิสเอเบิล 'foreign' callerid จากการส่งออกไปทาง trunk นี้ อย่างไรก็ตามถ้าเลือกออปชั่นนี้จะต้องคอนฟิก Outbound Caller ID ด้วยนะครับ

Maximum Channels
กำหนดจำนวนคอลที่จะให้โทรผ่าน Trunk นี้ได้พร้อมๆกัน (ทั้ง Inbound และ Outbound Call) ถ้าไม่ใส่หมายถึงไม่จำกัด จะใส่ค่าเท่าไหร่นั้นควรสอบถามจากผู้ให้บริการจะดีกว่าครับว่าสามารถโทรพร้อมๆกันได้กี่สาย ถ้าผู้ให้บริการจำกัดไว้เราก็อาจจะมีปัญหาการโทรออกก็ได้นะครับ เช่น จำกัดไว้ที่ 5 คอลพร้อมๆกัน เราโทรพร้อมๆกัน 5 คนก็ยังโทรได้ แต่พอคนที่ 6 จะโทรบ้างก็จะโทรไม่ออกนะครับจนกว่าจะมีสายใดสายหนึ่งวางไปก่อน
ถ้า Trunk นี้มีการรับคอลเข้ามาด้วย เช่นเราไปของเบอร์ DID 02xxxxxxx จากผู้ให้บริการรายนี้ด้วย และเขาก็ส่งมาจากเซอร์เวอร์ตัวเดียวกันด้วย ก็หมายความว่าจำนวน Maxmimun Channels ก็จะมีปัญหาครับ เพราะว่าจริงๆแล้วคอนฟิกดีฟอลท์ Elastix จะนับรวมทั้ง Inbound และ Outbound Call เลยครับ แต่ก็สามารถแก้ไขได้โดยเราไปแก้ชื่อของ "Inbound Trunk" ให้เป็นชื่อ "from-trunk-[trunkname]" โดยที่ [trunkname] เป็นชื่อของ "Outbound Trunk" ครับ

Disable Trunk
ปิดหรือเปิดการใช้ Trunk นี้

Monitor Trunk Failures
ใส่ชื่อไฟล์ของ AGI Script ซึ่งเมื่อ Trunk นี้มีปัญหาเช่น ไม่สามารถโทรออกหรือติดต่อได้หรือว่าส่งคอลไปแล้วแต่ได้รับข้อความที่แสดงว่ามีความผิดพลาดใดๆก็ตาม ยกเว้นข้อความว่า NOANSWER หรือ CANCEL จะทำให้ Elastix ไปเรียก AGI Script ที่ระบุไว้ให้ทำงานตามเงื่อนไขที่ระบุไว้ในสคริปต์ เช่นอาจจะเขียนไว้ใน AGI Script ว่าให้เก็บเป็น Log file หรือส่งเมล์ หรือทำเป็นรายงานออกมา

รายละเอียดเพิ่มเติมเกี่ยวกับ AGI Scripts

Dial Rules
กำหนดรูปแบบเบอร์ที่จะส่งไปให้ผู้ให้บริการ ซึ่งเราต้องเซ็ตให้ Elastix ส่งเบอร์ไปตามรูปแบบที่เขาต้องการไม่เช่นนั้นก็จะโทรออกไม่ได้

Note!
1. Dial Rule ของ Trunks คล้ายคลึงกับ Dial Patterns ของ Outbound Route โดยที่ Elastix จะทำ Outbound Route ก่อนแล้วจึงมาทำ Outbound Trunk
2. เราสามารถใส่ Prefix ได้ที่นี่ หรือจะตัด Digit เพิ่มเติมจากที่หลงเหลือมาจาก Outbound Route ก็ได้
3. ใส่ได้มากกว่า 1 Rule โดยที่ Elastix จะเช็คทีละบรรทัดจากบนลงล่าง ถ้าแม๊ตซ์แล้วก็จะเลิกแล้วดำเนินการในขั้นตอนต่อไป

รายละเอียดของค่าที่ใส่ได้มีดังต่อไปนี้

X (ตัวใหญ่) แทนตัวเลขใดๆก็ได้ตั้งแต่ 0 - 9
Z (ตัวใหญ่) แทนตัวเลขใดๆตั้งแต่ 1 - 9
N (ตัวใหญ่) แทนตัวเลขใดๆตั้งแต่ 2 - 9
[1237-9] แทนตัวเลขที่อยู่ในวงเล็บ กรณีนี้คือ 1,2,3,7,8,9
. (เครื่องหมายจุด จุดเดียว) แทนตัวเลขอะไรก็ได้กี่หลักก็ได้ แค่จุดเดียวเท่านั้น และห้ามใส่ไว้ข้างหน้าเครื่องหมาย + หรือ |
| ลบตัวเลขหรือพรีฟิกซ์ออกจากเบอร์ เช่น 613|NXXXX แล้วยูสเซอร์กด 61345511 ตอนที่ Elastix ส่งออกไปที่ Trunk จะเหลือเบอร์แค่ 45511
+ เพิ่มพรีฟิกซ์ไว้ข้างหน้าเบอร์ เช่น 001+X. และเบอร์ที่เหลือจาก Outbound Route คือ 81234 จะทำให้เบอร์ที่ส่งออกไปที่ Trunk กลายเป็น 00181234
เราสามารถใช้ทั้ง + และ | ในบรรทัด (Rule) เดียวกันได้ เช่น 66+0|X.

Dial Rules Wizards และ Outbound Dial Prefix
ใช้แทน Dial Rules ได้ครับ (แต่ต้องเลือกอย่างใดอย่างหนึ่งระหว่าง Dial Rules กับ Dial Rules Wizards) แต่ไม่ยืดหยุดหยุ่นเท่าการตั้ง Dial Rules เอง มีให้เลือก 4 แบบครับ
1. Always dial with prefix - จะเพิ่มพรีฟิกซ์ที่ตั้งไว้ในช่อง "Outbound Dial Prefix" เข้าไปในเบอร์ แล้วจึงส่งออก Trunk
2. Remove prefix from localnumber - จะลบพรีฟิกซ์ที่ตั้งไว้ในช่อง "Outbound Dial Prefix" ออกจากเบอร์ แล้วจึงส่งออก Trunk
3. Lookup numbers for local trunk - ถ้าเลือก Elastix จะไปเช็คที่เว็บไซต์ http://www.localcallingguide.com ว่าเบอร์ที่โทรเป็นเบอร์ local หรือไม่ (มีเฉพาะเบอร์ในทวีปอเมริกาเหนือเท่านั้น ไม่มีของประเทศไทยครับ :P ) แล้วเราก็จะโทรโดยกดแค่ 7 (เบอร์อย่างเดียว) หลักหรือไม่ก็ 10 หลัก (เบอร์รวมรหัสพื้นที่อีก 3 หลัก) ฟีเจอร์นี้จะใช้กับ PSTN/ZAP Trunk ครับ **อธิบายเฉยๆครับเพราะเราไม่ได้ใช้งานแบบนี้หรอกเพราะเราอยู่ในประเทศไทย **

การเซ็ต Outbound Trunk มีออปชั่นที่เกียวข้องคือ Trunk Name และ PEER Details ดังนี้
Trunk Name
ตั้งชื่อ Outbound Trunk ครับ ควรตั้งให้สื่อความหมายกับ Trunk เช่นตั้งชื่อตามผู้ให้บริการ เพื่อเวลาดูทีหลังจะได้รู้ว่า Trunk ไหนเป็นของใคร
PEER Details
เป็นรายละเอียดของผู้ให้บริการ Trunk นี้ครับ มีรายละเอียดค่อนข้างเยอะพอสมควร และขึ้นอยู่กับว่าเราเซ็ต SIP Trunk แบบไหนด้วย ถ้าอยากรู้ว่าค่าที่ใส่เข้าไปนั้นมีอะไรบ้าง แต่ละค่ามีความหมายว่าอะไร คลิ๊กที่นี่เลยครับ รับรองละเอียดยิบ

ตอนนี้เอาเป็นว่าถ้าเราเชื่อมต่อแบบ IP Authentication อย่างน้อยๆก็ควรมีข้อมูลดังนี้ครับ
host=216.194.255.80
port=5060
type=peer
disallow=all
allow=g729,g723
insecure=invite,port
dtmfmode=rfc2833


โดยที่ host - ไอพีแอดเดรสของผู้ให้บริการ, port - หมายเลข SIP port ของเซอร์เวอร์ผู้ให้บริการ, type - ใส่ peer, disallow - ใส่ all, allow - ใส่โคเด็คที่ Elastix รองรับ และผู้ให้บริการรองรับ เอาเฉพาะที่รองรับทั้งคู่หน่ะครับ, insecure - ใส่ invite,port ส่วน dtmfmode - ใส่ rfc2833 ครับ

และถ้าเชื่อมต่อแบบใช้ Username/Password อย่างน้อยๆก็ควรมีข้อมูลดังต่อไปนี้

host=202.10.11.12
port=5060
username=666666
secret=1234567890
type=peer
disallow=all
allow=g723,g729
insecure=invite,port
dtmfmode=rfc2833
fromuser=666666


โดยที่ host ใส่ไอพีแอดเดรสของผู้ให้บริการ, port ใส่เบอร์ SIP port ของผู้ให้บริการ, username ใส่ username ที่ผู้ให้บริการแจ้งมา, secret ใส่ password ที่ผู้ให้บริการแจ้งมา, type ใส่ peer, disallow ใส่ all, allow ใส่โคเด็คที่ทั้งเราและผู้ให้บริการรองรับ, insecure ใส่ invite,port ส่วน dtmfmode ใส่ rfc2833 และ fromuser ใส่ตาม username ครับ

Note!
1. รายละเอียดของออปชั่น insecure เพิ่มเติม
2. อ่านรายละเอียดเกี่ยวกับ Asterisk Codec เพิ่มเติม
3. อ่านรายละเอียดเกี่ยวกับ dtmfmode เพิ่มเติม

การเซ็ต Inbound Trunk มีออปชั่นที่เกี่ยวข้องคือ User Context และ User Details มีรายละเอียดดังนี้
USER Context

ตั้งชื่อ User Context โดย Elastix จะใช้ชื่อนี้มาคำนวณหาจำนวน Inbound Call ครับ โดยจะต้องตั้งชื่อแบบนี้ from-trunk-trunk_name_of_outbound_trunk เช่นสมมติว่า Outbound Trunk Name ชื่อ voip4share ก็ให้ตั้งชื่อ User Context เป็น from-trunk-voip4share

USER Details
เป็นรายละเอียดเกี่ยวกับ SIP Server ที่จะส่งคอลเข้ามาหา Elastix ครับ เช่น ไอพีแอดเดรส พอร์ต โคเด็คที่เราจะให้เขาใช้ซึ่งต้องเช็คด้วยว่าเขารับโคเด็คอะไรได้บ้าง เดี๋ยวจะคุยกันไม่ได้นะครับ เป็นต้น ดังตัวอย่าง

disallow=all
allow=g723,g729
host=202.69.137.5
port=5060
type=peer
context=from-trunk-custom
insecure=invite,port
dtmfmode=rfc2833


โดยที่ disallow ใส่ all ส่วน allow ใส่โคเด็คที่เขารองรับ, host ใส่ไอพีแอดเดรสของเขา, port ใส่เบอร์ SIP port ของเขา, context ใส่ชื่อ context insecure ใส่ invite,port ส่วน dtmfmode ใส่ rfc2833 ครับ

Register String
เอาไว้ใส่ Username/Password/IP Address (หรือ Hostname)/SIP Port ของผู้ให้บริการที่เราจะเอา Trunk นี้ไปรีจิสเตอร์ครับ (สำหรับการเชื่อมต่อ SIP แบบ Account Authentication) รูปแบบการใส่เป็นดังนี้

username:password@ip-address:port หรือ username:password@ip-address:port/extension

เช่นเราไปลงทะเบียนกับ TOT NetCall แล้วได้แอ๊คเค๊าท์มาดังนี้ Username=0681109181 Password=KIKKA และเรารู้ว่า SIP Server ของเขาคือ sipproxy.totnetcall.com ก็ใส่แบบนี้นะครับ

0681109181:KIKKA@sipproxy.totnetcall.com:5060 หรือ 0681109181:KIKKA@sipproxy.totnetcall.com:5060/0681109181 ก็ได้

คอนฟิกเสร็จแล้วก็กดปุ่ม "Submit Changes" แล้วอย่าลืมคลิ๊กแถบสีชมพู "Apply Configuration Changes Here" ด้วยนะครับ
jubjang
Gold Member
 
โพสต์: 55
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 15:41

ย้อนกลับไปยัง Elastix - Unified Communications Software

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 3 ท่าน