วิธีการติดตั้ง Issabel บน CentOS 7
เทคนิคการคอนฟิก Firewall เมื่อเปลี่ยนพอร์ต Web (http/https)
เทคนิคการคอนฟิก Firewall ให้เปิดรับบาง Port จากบาง IP
เทคนิคการใช้งาน Caller ID Lookup Sources จาก MySQL
เทคนิคการใช้งาน Caller ID Lookup Sources จาก Internal Phonebooks
คอนเซ็ปต์ของพอร์ต FXO คือใช้งานเป็น Trunk ครับ ซึ่งเป็น Analog Trunk ที่ใช้เชื่อมต่อกับโลกภายนอก เช่นต่อกับเบอร์โทรศัพท์ธรรมดา ไม่ว่าจะเป็นเบอร์ของ TOT, TRUE หรือว่า TT&T หรือจะต่อกับเบอร์ Extension ของตู้สาขาก็ได้ ที่นี้ก็จะโทรเข้าหรือโทรออกก็ได้ (หรือได้ทั้ง 2 อย่างแต่ต้องไม่ใช่เวลาเดียวกัน 55+)
เราจะมาคอนฟิกพอร์ต FXO สัก 1 พอร์ตเพื่อต่อกับเบอร์ Extension ของตู้สาขาโทรศัพท์ (ผมไม่มีเบอร์โทรศัพท์จะลอง)
** เทคนิคนี้ใช้ได้ทั้งการ์ดแบบ PCI และ PCI Express ครับ **
1. ติดตั้งการ์ด FXO ในเครื่อง
- ปิดเครื่อง ถอดสายไฟ สาย LAN สายจอ (แนะนำว่าต้องถอดสายเหล่านี้ออกด้วยนะครับ เสียเวลานิดๆหน่อยๆเอง เพราะมันอาจจะมีไฟ surge เล็กๆ ซึ่งอาจจะทำให้การ์ดของท่านพังได้)
- ใส่การ์ดใน Slot ที่เหมาะสม
- ถ้าบนการ์ดมีเฉพาะ FXO (โมดูลสีแดง) อย่างเดียว ไม่จำเป็นต้องต่อสายไฟเข้าการ์ด แต่ท่านจะต่อก็ได้นะครับ แต่ถ้ามี FXS (โมดูลสีเขียว) ด้วย ต้องต่อสายไฟเข้าการ์ดด้วยครับ อันนี้สำคัญมาก
- แล้วเปิดเครื่อง
2. เพิ่มบรรทัด conext_lines from-zaptel
อย่าลืมแก้ไขไฟล์ /etc/dahdi/genconf_parameters เพิ่มบรรทัดนี้เข้าไปด้วย ไม่งั้นเดี๋ยวจะโทรเข้าไม่ได้
- โค้ด: เลือกทั้งหมด
context_lines from-zaptel
3. เข้าหน้าเว็บ Elastix
คลิ๊กแท๊ป System -> Hardware Detector แล้วกดปุ่ม Detect New Hardware
รอสักพักก็จะเห็น Card และพอร์ต FXO ครับ จะมีหมายเลขพอร์ตกำกับไว้ด้วย เช่น 1, 2, 3, ...
4. เลือกพอร์ต
จากหน้า Hardware Detection ให้เลือกพอร์ตที่จะใช้งาน
ในรูปเป็นการ์ด Analog แบบ 3 FXO + 1 FXS ตัวเลขที่อยู่ด้านล่างตัวหนังสือ FXO, FXS เป็นหมายเลขพอร์ตนะครับ เลือกพอร์ต 1 ครับ
5. สร้าง Trunk สำหรับพอร์ต FXO เพื่อใช้สำหรับรับสายเข้า
5.1 เข้าเมนู PBX -> ZAP Channel DIDs
** ข้อ 5.1 นี้ จำเป็นต้องทำก็ต่อเมื่อ ท่านต้องการแยกแยะว่า ถ้าโทรมาเข้าพอร์ต FXO นี้ ต้องการให้ทำงานอย่างหนึ่ง แต่ถ้าโทรเข้าพอร์ต FXO อื่นก็ต้องการให้ทำงานอย่างอื่น ซึ่งไม่เหมือนกัน ยกตัวอย่างเช่น ท่านอาจจะมี IVR 2 บริษัท หรือต้องการแยกเบอร์โทรเข้า IVR บริษัท กับเบอร์ Fax อย่างนี้เป็นต้นครับ **
ช่อง DID ใส่เบอร์ Extension (หรือเบอร์โทรศัพท์) ที่จะเอามาต่อกับพอร์ต FXO นะครับ มันจะเป็นเบอร์ที่รองรับ CallerID หรือไม่รองรับก็ได้ แต่ถ้าเป็นเบอร์ที่รองรับ CallerID เวลามีคนโทรเข้ามาก็จะโชว์เบอร์ด้วย ตัวพอร์ต FXO รองรับ CallerID นะครับ พอร์ตนี้ผมจะต่อกับเบอร์ Extension (จากตู้สาขา) 404 ผมก็เลยใส่เป็น 404 แต่จะใส่เป็น 400 หรือ 200 หรือ 021234567 ก็ได้ ตามสะดวก
5.2 เข้าเมนู PBX -> Inbound Routes
6. ทดสอบโทรเข้าจากเบอร์ Extension อื่น
ถ้าเวอร์คก็จะดังที่เบอร์ Extension 100
7. สร้าง Trunk สำหรับพอร์ต FXO เพื่อใช้โทรออก
7.1 เข้าเมนู PBX->Trunks
ถ้าท่านเพิ่งเข้าเมนูนี้เป็นครั้งแรก ให้มองด้านขวามือ ตรงที่เป็น "Channel g0" มันเป็นอันที่ Elastix ทำไว้เป็นตัวอย่าง ให้คลิ๊กแล้วแก้ไขข้อมูล หรือว่าจะลบทิ้งก็ได้ ผมแนะนำให้ลบทิ้งดีกว่าครับ แล้วสร้างใหม่
7.2 สร้าง Dahdi Trunk ใหม่
ป้อนข้อมูล
กด Apply ถ้าเห็นข้อความแบบนี้ให้คลิ๊ก OK เลย
8. คอนฟิก Outbound Routes
มาตั้งเงื่อนไขที่จะโทรออกทาง Trunk นี้กันครับ เช่นกำหนดว่า กด 9 ให้โทรออกทางนี้
กด 9 ตามด้วยเบอร์ปลายทาง เช่น 9200 โทรไปเบอร์ Extension 200 ของตู้สาขา หรือ 9*81 เลือก CO Line 1 ของตู้สาขาเพื่อโทรออกสายนอก เป็นต้น
8.1 เมนู PBX -> Outbound Routes
ถ้าเข้าเมนูนี้เป็นครั้งแรก สังเกตุด้านขวามือครับ จะเห็น 0 9_outside เป็น Routes ที่ Elastix สร้างไว้เป็นตัวอย่าง ให้คลิ๊กแล้วแก้ไขข้อมูลหรือว่าจะลบทิ้งก็ได้ ลบทิ้งเหมือนเดิมครับ
8.2 สร้าง Route ใหม่
9. ทดสอบโทรออกทาง Trunk
ใช้ Softphone หรือเครื่องโทรศัพท์ที่ต่อกับพอร์ต FXS กด 9 โทรไปเบอร์ปลายทาง
สถานะของพอร์ต FXO บน Asterisk Console เมื่อมีสายโทรเข้ามา
โทรเข้าพอร์ต FXO 1
-- Starting simple switch on 'DAHDI/1-1'
การแก้ปัญหา
คอนฟิกแล้วโทรไม่เข้า โทรเข้ามามีเสียงบอกว่า "The number you've dialed is not inservice..."
-- Starting simple switch on 'DAHDI/1-1'
-- Executing [s@from-pstn:1] NoOp("DAHDI/1-1", "No DID or CID Match") in new stack
-- Executing [s@from-pstn:2] Answer("DAHDI/1-1", "") in new stack
-- Executing [s@from-pstn:3] Wait("DAHDI/1-1", "2") in new stack
-- Executing [s@from-pstn:4] Playback("DAHDI/1-1", "ss-noservice") in new stack
-- <DAHDI/1-1> Playing 'ss-noservice.gsm' (language 'en')
-- Executing [s@from-pstn:5] SayAlpha("DAHDI/1-1", "") in new stack
-- Executing [s@from-pstn:6] Hangup("DAHDI/1-1", "") in new stack
== Spawn extension (from-pstn, s, 6) exited non-zero on 'DAHDI/1-1'
-- Executing [h@from-pstn:1] Hangup("DAHDI/1-1", "") in new stack
== Spawn extension (from-pstn, h, 1) exited non-zero on 'DAHDI/1-1'
-- Hungup 'DAHDI/1-1'
เกิดจากคอนฟิก context ของ DAHDI ยังเป็น from-pstn อยู่ครับ ที่จริงต้องเป็น from-zaptel
- โค้ด: เลือกทั้งหมด
elastix-a*CLI> dahdi show channels
Chan Extension Context Language MOH Interpret Blocked State
pseudo default default In Service
1 from-zaptel default In Service
ถ้ายังไม่เป็น from-zaptel ให้แก้ไขไฟล์ /etc/dahdi/cat genconf_parameters เพิ่มบรรทัดนี้เข้าไป
- โค้ด: เลือกทั้งหมด
context_lines from-zaptel
เสร็จแล้วรีสตาร์ท dahdi ใหม่ ใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
dahdi_genconf
- โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi restart"
บทความที่เกี่ยวข้อง
เทคนิคการติดตั้ง Elastix 2.5
Elastix