เราสามารถเอาพอร์ต FXS (โมดูลสีเขียว) นี้ไปต่อกับ Fax หรือเครื่องโทรศัพท์ธรรมดา (หรือที่เรียกว่า Single Line Telephone, SLT) ก็ได้ หรือพอร์ตสายนอก (หรือที่เรียกว่า CO Line) ของตู้สาขาก็ได้ หรือจะต่อกับพอร์ต FXO ของอุปกรณ์ VoIP Gateway ก็ได้ ไม่ว่าจะต่อกับอุปกรณ์ประเภทไหนก็คอนฟิกเหมือนๆกันครับ
** เทคนิคนี้ใช้ได้ทั้งการ์ดแบบ PCI และ PCI Express ครับ **
1. ติดตั้งการ์ด FXS ในเครื่อง
- ปิดเครื่อง ถอดสายไฟ สาย LAN สายจอ (แนะนำว่าต้องถอดสายเหล่านี้ออกด้วยนะครับ เสียเวลานิดๆหน่อยๆเอง เพราะมันอาจจะมีไฟ surge เล็กๆ ซึ่งอาจจะทำให้การ์ดของท่านพังได้)
- ใส่การ์ดใน Slot ที่เหมาะสม
- เนื่องจากบนการ์ดมี FXS (โมดูลสีเขียว) ด้วย ต้องต่อสายไฟเข้าการ์ดด้วยครับ อันนี้สำคัญมาก
- แล้วเปิดเครื่อง
2. เพิ่มบรรทัด conext_lines from-zaptel
อย่าลืมแก้ไขไฟล์ /etc/dahdi/genconf_parameters เพิ่มบรรทัดนี้เข้าไปด้วย ไม่งั้นเดี๋ยวจะโทรเข้าไม่ได้
- โค้ด: เลือกทั้งหมด
context_lines from-zaptel
3. เข้าหน้าเว็บ Elastix
คลิ๊กแท๊ป System -> Hardware Detector แล้วกดปุ่ม Detect New Hardware
รอสักพักก็จะเห็น Card และพอร์ต FXS ครับ จะมีหมายเลขพอร์ตกำกับไว้ด้วย เช่น 1, 2, 3, ...
4. เช็คหมายเลขพอร์ต
ก่อนอื่นให้ตรวจสอบหมายเลขพอร์ต FXS ก่อนครับ พอร์ตที่เราต้องการจะใช้งานมันหมายเลขอะไร ดูหมายเลขพอร์ตได้จากเมนู Hardware Detector
พอร์ต FXS มีหมายเลขพอร์ตคือ 4
5. คอนฟิก FXS Extension
สังเกตว่าตรง Channel ต้องใส่เลข 4 ซึ่งเป็นเบอร์พอร์ตของ FXS
และแก้ไขคอนฟิกเพิ่มเติม
และถ้าเราเอาหัวเครื่องโทรศัพท์ หรือเครื่องแฟ็กซ์ไปต่อกับพอร์ตที่ 4 ของการ์ด ยกหูก็จะได้ยินเสียง Dial Tone และกดต่อไปเบอร์ Extension อื่นๆได้
6. โทรออกและรับสายเข้า
เมื่อคอนฟิกเบอร์ Extension ของพอร์ต FXS แล้ว ก็พร้อมจะโทรออกและรับสายเข้า
6.1คอนฟิกเบอร์ Extension เพิ่มอีก 1 เบอร์ ไว้ทดสอบโทรเข้าไปหาพอร์ต FXS และเอาไว้เทสโทรออกจากพอร์ต FXS ให้คอนฟิก Extension แบบ SIP เพราะง่ายต่อการทดสอบ
6.2 โทรเทสจากพอร์ต FXS (เบอร์ 800) ไปหาเบอร์ SIP ( เบอร์ 100)
ยกหูโทรศัพท์ ฟังเสียง Dial Tone กดเบอร์ปลายทาง 100 แล้วรอประมาณ 5 วินาที จะมีสัญญาณเรียกไปยังเบอร์ SIP
6.3 โทรเทสจากเบอร์ SIP ไปยังพอร์ต FXS
ที่โปรแกรม Softphone ที่ใช้ทดสอบ กดเบอร์ปลายทาง 800 รอสักครู่เครื่องโทรศัพท์เบอร์ 800 จะดัง สังเกตุที่จอ (ถ้าเครื่องรองรับ CallerID) จะโชว์เบอร์โทรเข้าเป็นเบอร์ 100
เพิ่มเติม ลองใช้คำสั่งต่างๆเหล่านี้ดูครับ
- โค้ด: เลือกทั้งหมด
demo*CLI> dahdi show channels
Chan Extension Context Language MOH Interpret Blocked State
pseudo default default In Service
1 from-pstn default In Service
2 from-pstn default In Service
3 from-pstn default In Service
4 from-internal default In Service
- โค้ด: เลือกทั้งหมด
demo*CLI> dahdi show channel 4
Channel: 4
File Descriptor: 25
Span: 1
Extension:
Dialing: no
Context: from-internal
Caller ID: 800
Calling TON: 0
Caller ID name: device
Mailbox: 800@device
Destroy: 0
InAlarm: 0
Signalling Type: FXO Kewlstart
Radio: 0
Owner: DAHDI/4-1
Real: DAHDI/4-1
Callwait: <None>
Threeway: <None>
Confno: -1
Propagated Conference: -1
Real in conference: 0
DSP: yes
Busy Detection: no
TDD: no
Relax DTMF: no
Dialing/CallwaitCAS: 0/0
Default law: ulaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
128 taps
(unless TDM bridged) currently ON
Wait for dialtone: 0ms
Actual Confinfo: Num/0, Mode/0x0000
Actual Confmute: No
Hookstate (FXS only): Offhook
5. สถานะของพอร์ต FXS
ยกหู
-- Starting simple switch on 'DAHDI/4-1'
วางหู
-- Hungup 'DAHDI/4-1'
แก้ปัญหาโทรไม่ออก
-- Executing [90870050676@from-internal:4] Macro("DAHDI/4-1", "dialout-trunk,1,0870050676,,") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("DAHDI/4-1", "DIAL_TRUNK=1") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("DAHDI/4-1", "0?sub-pincheck,s,1") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("DAHDI/4-1", "0?disabletrunk,1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("DAHDI/4-1", "DIAL_NUMBER=0870050676") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("DAHDI/4-1", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("DAHDI/4-1", "OUTBOUND_GROUP=OUT_1") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("DAHDI/4-1", "0?nomax") in new stack
-- Executing [s@macro-dialout-trunk:8] GotoIf("DAHDI/4-1", "1?chanfull") in new stack
-- Goto (macro-dialout-trunk,s,30)
-- Executing [s@macro-dialout-trunk:30] NoOp("DAHDI/4-1", "max channels used up") in new stack
-- Executing [90870050676@from-internal:5] Macro("DAHDI/4-1", "outisbusy,") in new stack
เป็นเพราะสายค้าง โทรออกทาง Trunk 1, มีคนใช้สายอยู่