** GSM Gateway หรือบางคนก็เรียกว่า GSM Fixed Wireless Terminal (FWT) คล้ายๆกับ GSM VoIP Gateway มันต่างกันตรงที่ GSM Gateway ไม่มีพอร์ต LAN มันมีแต่พอร์ตโทรศัพท์ (เป็นพอร์ต FXS) ต่อกับ CO Line, FAX, Telephone, พอร์ต FXO ของ VoIP Gateway, พอร์ต FXO ของ Analog Card **
** ดูตัวอย่างของ GSM FWT ได้จากบทความนี้ครับ การเชื่อมต่อ GSM FWT กับการ์ด FXO **
สันนิษฐานปัญหาก่อนนะครับว่าเกิดจากอะไร ทำไมถึงรอสายนานขนาดนั้น เกิน 10 วินาที ผมคาดว่าเกิดจากตัว GSM Gateway นั่นแหล่ะ ที่มันต้องรอจนแน่ใจแล้วว่ายูสเซอร์จะไม่กดเลขอะไรมาเพิ่มอีก ระยะเวลาที่มันรอนี้เองที่ทำให้นานกว่าจะโทรติด มีบางยี่ห้อสามารถรับ # ได้ ซึ่งหมายความว่าถ้าเรากด (หรือส่ง) ปุ่ม # ต่อท้ายเบอร์ มันก็จะโทรเลยทันที ในขณะที่บางยี่ห้อไม่รองรับปุ่ม # ก็เลยต้องรอจนกว่าจะถึง Digit Timeout จึงจะโทรออกให้ ซึ่งค่าเวลา Digit Timeout นี้อาจจะเป็น 5 วินาที หรือ 10 วินาที บางยี่ห้อก็เซ็ตได้ บางยี่ห้อก็เซ็ตไม่ได้ ต้องปล่อยเลยตามเลย
** บางท่านอาจจะใช้เทคนิคให้มีเสียงรอสาย Music On Hold แทน แต่ถ้าเป็น Trunk แบบ DAHDI ก็จะได้ยินแค่แป๊บเดียว **
ผมจะแก้ปัญหาโดยทำตามที่ท่านนี้อยากได้นะครับ คือพอยูสเซอร์โทรออกผ่าน Trunk FXO ที่ต่อกับ GSM Gateway ให้มีเสียง "กรุณาถือสายรอสักครู่ค่ะ"
1. อัดเสียง "กรุณาถือสายรอสักครู่ค่ะ"
จะให้คนอัดหรือใช้โปรแกรม Text To Speech ก็ได้
แนะนำโปรแกรม Text To Speech
ผมทำเสียงไว้ให้ดาวน์โหลดมาใช้งานได้เลยครับ เสียง "กรุณาถือสายรอสักครู่ค่ะ"
2. อัพโหลดเข้า Elastix
ใช้เมนู PBX -> System Recording
ชื่อไฟล์จะเป็น trunk-please-wait เวลาเราจะเรียกใช้งานเสียงนี้ให้อ้างชื่อไฟล์เป็น trunk-please-wait ไม่ต้องมีนามสกุล ไฟล์นี้ถูกเก็บอยู่ที่โฟลเดอร์ /var/lib/asterisk/sounds/custom ในเครื่อง Elastix
3. สร้าง Trunk
เมนู System -> Hardware Detector
ดูหมายเลขพอร์ต จากรูปตัวอย่างผมจะใช้พอร์ตที่ 1-6 ถึงจะมีแค่พอร์ต 1 ที่ต่อสายโทรศัพท์อยู่ก็เหอะ
และเช็คจากไฟล์ /etc/asterisk/dahdi-channels.conf ก็รู้ว่าพอร์ตนี้อยู่ใน Group 0
- โค้ด: เลือกทั้งหมด
;;; line="1 WCTDM/0/0 FXSKS (SWEC: OSLEC)"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-zaptel
channel => 1
callerid=
group=
context=default
เมนู PBX -> Trunks
จะสร้าง DAHDI Trunk หรือ Add Zap Trunk (DAHDI compatibility mode) ก็ได้ครับ ผมเลือก Add Zap Trunk (DAHDI compatibility mode) เพราะว่าผมใช้ Elastix 2.0.3 อยู่ ซึ่งยังไม่มี DAHDI Trunk ให้เลือก
ตรงบรรทัดสุดท้าย Zap Identifier (trunk name) จะใส่เป็น g0 หรือ G0 หรือ r0 หรือ R0 หรือระบุหมายเลขพอร์ตเลยก็ได้ ซึ่งในที่นี้คือ 1
3. สร้าง Outbound Routes
เมนู PBX -> Outbound Routes
กำหนด Code ที่จะโทรออกทาง Trunk ชื่อ Analog-0 ที่สร้างไว้เมื่อกี้
โดยผมตั้งโค๊ดว่ากด 9 นำหน้าเบอร์ มันจะโทรออกทาง Trunk g0 ซึ่งก็คือ Analog-0 ที่เราสร้างไว้เมื่อกี้
อย่าลืมกด Submit ตามด้วย Apply Configuration Changes Here นะครับ
4. แทรกบรรทัดให้เล่นไฟล์เสียงเข้าไปในโค๊ดของ Elastix
เป็นขั้นตอนค่อนข้างสำคัญที่สุดที่จะทำให้ได้ยินเสียง "กรุณาถือสายรอสักครู่ค่ะ"
จำชื่อ Outbound Route ที่สร้างเมื่อกี้ได้ป่ะครับ มันชื่ออะไร มันชื่อว่า 9_outside
ดูที่ไฟล์ /etc/asterisk/extensions_additional.conf
ค้นหาคำว่า 9_outside]
ให้มีเครื่องหมาย ] ต่อท้ายด้วยนะครับ จะได้เจอเลย
ก็เจอแบบนี้
[outrt-001-9_outside]
include => outrt-001-9_outside-custom
exten => _9X.,1,Macro(user-callerid,SKIPTTL,)
exten => _9X.,n,Set(_NODEST=)
exten => _9X.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _9X.,n,Macro(dialout-trunk,6,${EXTEN:1},,)
exten => _9X.,n,Macro(outisbusy,)
เราควรจะแทรกบรรทัดให้มันเล่นไฟล์เสียง trunk-please-wait ตรงนี้ ใส่บรรทัดไหนดีหล่ะ เอาเป็นบรรทัดระหว่าง exten => _9X.,n,Macro(record-enable,${AMPUSER},OUT,) และ exten => _9X.,n,Macro(dialout-trunk,6,${EXTEN:1},,) ก็แล้วกัน ก็จะได้แบบนี้
[outrt-001-9_outside]
include => outrt-001-9_outside-custom
exten => _9X.,1,Macro(user-callerid,SKIPTTL,)
exten => _9X.,n,Set(_NODEST=)
exten => _9X.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _9X.,n,Playback(custom/trunk-please-wait)
exten => _9X.,n,Macro(dialout-trunk,6,${EXTEN:1},,)
exten => _9X.,n,Macro(outisbusy,)
แต่เดี๋ยวก่อนครับ คงยังไม่ลืมว่าถ้าเราแก้ไขอะไรก็ตามในไฟล์ extensions_additional.conf นี้พอเรากด Apply Config ในหน้าเว็บ ค่ามันก็จะกลับมาเป็นดีฟอลท์อีก บรรทัดที่เราอุตส่าห์ไปเพิ่มไว้มันก็จะหายไป ผมมีวิธีแก้ไขคือ ให้ก๊อบทั้งหมดนี้ไปไว้ในไฟล์ /etc/asterisk/extensions_override_elastix.conf แทน เอาไว้บรรทัดบนสุดของไฟล์เลยก็ได้ครับ
** ถ้าในโฟลเดอร์ /etc/asterisk ไม่มีไฟล์ extensions_override_elastix.conf ก็ให้ใช้ไฟล์ /etc/asterisk/extensions_override_freepbx.conf แทนนะครับ **
[outrt-001-9_outside]
include => outrt-001-9_outside-custom
exten => _9X.,1,Macro(user-callerid,SKIPTTL,)
exten => _9X.,n,Set(_NODEST=)
exten => _9X.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _9X.,n,Playback(custom/trunk-please-wait)
exten => _9X.,n,Macro(dialout-trunk,6,${EXTEN:1},,)
exten => _9X.,n,Macro(outisbusy,)
จากนั้นเข้า asterisk -r แล้วรันคำสั่ง dialplan reload
5. ทดสอบ
โทรออกตามปกติ กด 9 ตามด้วยเบอร์ปลายทาง ก็จะได้ยินเสียงว่า "กรุณาถือสายรอสักครู่ค่ะ"
บทความที่เกี่ยวข้อง
เทคนิคการติดตั้งการ์ด 4 FXO แบบ PCI Express บน Elastix