เราจะมาคอนฟิกพอร์ต FXO สัก 1 พอร์ตเพื่อต่อกับเบอร์ Extension ของตู้สาขาโทรศัพท์ (ผมไม่มีเบอร์โทรศัพท์จะลอง)
1. เลือกพอร์ต
เข้าเมนู Hardware Detection เลือกพอร์ตที่จะเอามาใช้งาน

ในรูปเป็นการ์ด Analog แบบ 3 FXO + 1 FXS ตัวเลขที่อยู่ด้านล่างตัวหนังสือ FXO, FXS เป็นหมายเลขพอร์ตนะครับ เลือกพอร์ต 1 ครับ
2. สร้าง Trunk สำหรับพอร์ต FXO เพื่อใช้สำหรับรับสายเข้า
2.1 เข้าเมนู PBX -> ZAP Channel DIDs

ช่อง DID ใส่เบอร์ Extension (หรือเบอร์โทรศัพท์) ที่จะเอามาต่อกับพอร์ต FXO นะครับ มันจะเป็นเบอร์ที่รองรับ CallerID หรือไม่รองรับก็ได้ แต่ถ้าเป็นเบอร์ที่รองรับ CallerID เวลามีคนโทรเข้ามาก็จะโชว์เบอร์ด้วย ตัวพอร์ต FXO รองรับ CallerID นะครับ พอร์ตนี้ผมจะต่อกับเบอร์ Extension (จากตู้สาขา) 404 ผมก็เลยใส่เป็น 404 แต่จะใส่เป็น 400 หรือ 200 หรือ 021234567 ก็ได้ ตามสะดวก
2.2 เข้าเมนู PBX -> Inbound Routes

3. ทดสอบโทรเข้าจากเบอร์ Extension อื่น
ถ้าเวอร์คก็จะดังที่เบอร์ Extension 100
4. สร้าง Trunk สำหรับพอร์ต FXO เพื่อใช้โทรออก
4.1 เข้าเมนู PBX->Trunks
ถ้าท่านเพิ่งเข้าเมนูนี้เป็นครั้งแรก ให้มองด้านขวามือ ตรงที่เป็น "Channel g0" มันเป็นอันที่ Elastix ทำไว้เป็นตัวอย่าง ให้คลิ๊กแล้วแก้ไขข้อมูล หรือว่าจะลบทิ้งก็ได้ ผมแนะนำให้ลบทิ้งดีกว่าครับ แล้วสร้างใหม่


4.2 สร้าง Dahdi Trunk ใหม่

ป้อนข้อมูล

กด Apply ถ้าเห็นข้อความแบบนี้ให้คลิ๊ก OK เลย

5. คอนฟิก Outbound Routes
มาตั้งเงื่อนไขที่จะโทรออกทาง Trunk นี้กันครับ เช่นกำหนดว่า กด 9 ให้โทรออกทางนี้
กด 9 ตามด้วยเบอร์ปลายทาง เช่น 9200 โทรไปเบอร์ Extension 200 ของตู้สาขา หรือ 9*81 เลือก CO Line 1 ของตู้สาขาเพื่อโทรออกสายนอก เป็นต้น
5.1 เมนู PBX -> Outbound Routes
ถ้าเข้าเมนูนี้เป็นครั้งแรก สังเกตุด้านขวามือครับ จะเห็น 0 9_outside เป็น Routes ที่ Elastix สร้างไว้เป็นตัวอย่าง ให้คลิ๊กแล้วแก้ไขข้อมูลหรือว่าจะลบทิ้งก็ได้ ลบทิ้งเหมือนเดิมครับ


5.2 สร้าง Route ใหม่

6. ทดสอบโทรออกทาง 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"
