หน้า 1 จากทั้งหมด 1

เทคนิคการโทรออกโดยกด 9 รอ Dial Tone แล้วจึงกดเบอร์ปลายทาง

โพสต์โพสต์แล้ว: 16 ต.ค. 2012 16:38
โดย nuiz
ท่านที่เคยใช้งานตู้สาขาโทรศัพท์ (PBX) คงจะจำวิธีการโทรออกไปข้างนอกได้นะครับว่า ยกหูโทรศัพท์ ได้ยินเสียง Dialtone กด 9 รอฟัง Dial tone ตู๊ดๆๆๆๆๆ แล้วกดเบอร์ปลายทาง รอปลายทางรับสาย ต่อจากนั้นรอฟังสัญญาณ Ringback ว่าปลายทางสายว่างหรือสายไม่ว่าง

เสียง Dial tone แรกที่เราได้ยินเรียกว่า First Dial Tone (หรือจะเรียกว่า Dial tone เฉยๆก็ได้ครับ) ส่วน Dial Tone ครั้งที่สองนั้นเราเรียกว่า Second Dial Tone ครับ และเราเรียกวิธีการโทรออกที่ได้ยินเสียง Dial tone สองครั้งแบบนี้ว่า "Two Stage Dialing"

เทคนิคในบทความนี้จะทำให้เบอร์ Extension บน Elastix/Asterisk โทรออกแบบ Two Stage Dialing

** การโทรออกแบบ Two Stage Dialing ตามบทความนี้ ไม่ได้มีผลกับทุกคอลนะครับ เฉพาะคอลที่กด 9 แล้วส่งมาเข้า Elastix เท่านั้น ส่วนที่กดเลขอื่นๆนำหน้าไม่มีผลอะไรครับ **

** มีสมาชิกถามถึงฟีเจอร์ลักษณะนี้มา เดิมทีใช้งานตู้สาขาโทรศัพท์อยู่ ซึ่งตอนยูสเซอร์โทรออกเขาก็ยกหู ได้ยิน Dial tone กด 9 ได้ยิน Dial tone อีกครั้ง ถนัดใช้งานกันแบบนี้ ต่อมาเปลี่ยนจากตู้สาขาโทรศัพท์มาเป็น Elastix ครั้นจะบอกยูสเซอร์ว่าคุณไม่ต้องกด 9 ก่อนแล้วนะ ยกหูกดเบอร์ปลายทางได้เลย เกรงว่าจะมีแรงต่อต้านเล็กๆ เลยไม่อยากให้เปลี่ยนพฤติกรรมเดิมทันทีทันใด ให้คนใช้งานแบบเดิมๆได้ด้วย ค่อยๆเปลี่ยนไปทีละนิดๆ สุดท้ายคนก็จะเห็นว่า แบบใหม่มันง่ายกว่า ไม่ต้องกด 9 โทรติดเร็วกว่า ประหยัดเวลากว่าเห็นๆ ให้เขาเปลี่ยนของเขาเองจะดีกว่า **

อ่่านตรงนี้นิดนึงครับ บางทีท่านอาจจะไม่ต้องใช้บทความนี้เลยก็ได้

1. เสียง Dial tone ที่ได้ยินในบทความนี้ เป็นเสียง "ปลอม" ที่ Asterisk มันทำขึ้นมานะครับ ไม่ใช่เสียง Dial Tone ที่ได้จาก PSTN หรือ Trunks จริงๆ
2. ถ้าท่านมีอุปกรณ์จำพวก VoIP ATA FXS Gateway อาจจะทำที่อุปกรณ์เหล่านั้นเลยก็ได้ กด 9 ให้ทำเสียง Dial tone ออกมา ซึ่งผมเชื่อว่าน่าจะทำได้ทุกยี่ห้อ ตัวอย่างวิธีคอนฟิก Dialplan บน LinkSys/Cisco ATA FXS Gateway กด 9 มีเสียง Dial tone
3. อุปกรณ์พวก Softphone ก็ควรจะให้กดเบอร์โทรออกตรงๆได้เลยครับ ไม่ต้องกด 9
4. ข้อนี้สำคัญครับ ใน CDR จะเก็บเฉพาะกด 9 เท่านั้นครับ เบอร์หลังจากนั้นมันจะไม่เก็บแล้ว ทั้งนี้เพราะว่าเวลา Asterisk เก็บ CDR มันจะเก็บเบอร์ปลายทาง (เบอร์ในตัวมัน ก่อนจะมีการรับสาย) หาก Asterisk รับสายแล้ว ตัวเลขหลังจากนั้นถือว่าเป็น DTMF ครับ ไม่ใช่เบอร์โทรศัพท์ ไม่ใช่เบอร์ปลายทาง มันจึงไม่เก็บใน CDR ครับ

กด 9 มีเสียง Dial tone แล้วกดเบอร์ปลายทาง 0851619439 วิธีการคอนฟิกก็ไม่มีไรซับซ้อน ตามนี้เลยครับ

1. สร้าง Trunks โทรออกสายนอก
เป็น Trunks แบบไหนก็ได้ครับ DAHDI, SIP, IAX2

เมนู PBX -> Trunks

DAHDI Trunk:
รูปภาพ

SIP Trunk:
รูปภาพ

2. คอนฟิก Outbound Routes

ตั้ง Code ให้โทรออกไปภายนอกได้ เครื่องผมตั้งไว้ว่าโทรไปภายนอก กด 0x เช่น 0851619439 ได้เลย
- เพิ่ม Code เช็ค 0 ให้โทรออก Trunk ตามข้อ 1 (สังเกตุว่าไม่มี Code 9 นะครับ)

รูปภาพ

3. คอนฟิก DISA
พระเอกของบทความนี้ก็คือ DISA นี่แหล่ะครับ เพราะเวลาเราเรียกเข้า DISA ก็จะได้ยินเสียง Dial Tone พอกดหลักแรกเสียงก็จะหยุด เราก็กดเบอร์ที่เหลือต่อได้ พอหมดเวลา Timeout มันก็จะโทรออกให้เรา

รูปภาพ

กด Submit แล้วสังเกตุหน้าเว็บด้านขวามือครับ อาจจะมี DISA อยู่หลายอัน แต่ละอันจะมีหมายเลขกำกับไว้ หมายเลขนั้นคือลำดับการสร้าง DISA ครับ ให้จำตัวเลขของอันที่เราสร้างไว้เพื่อผลิต Dialtone นะครับ คือ เลข 1

รูปภาพ

4. เข้าไปดูในไฟล์ /etc/asterisk/extensions_additional.conf
ดูเฉยๆครับไม่ต้องทำอะไร
ค้นหา [disa] ครับ จะเห็นแบบนี้
โค้ด: เลือกทั้งหมด
[disa]
include => disa-custom
exten => 1,1,Answer
exten => 1,n,Set(_DISA=disa^1^newcall)
exten => 1,n(newcall),Set(_DISACONTEXT=from-internal)
exten => 1,n,Set(_KEEPCID=TRUE)
exten => 1,n,Set(_HANGUP=${TRUNK_OPTIONS})
exten => 1,n,Set(TIMEOUT(digit)=5)
exten => 1,n,Set(TIMEOUT(response)=10)
exten => 1,n,DISA(no-password,disa-dial)
exten => 1,n(end),Hangup
exten => 2,1,Answer
exten => 2,n,Set(_DISA=disa^2^newcall)
exten => 2,n(newcall),Set(_DISACONTEXT=from-internal)
exten => 2,n,Set(_KEEPCID=TRUE)
exten => 2,n,Set(_HANGUP=${TRUNK_OPTIONS})
exten => 2,n,Set(TIMEOUT(digit)=5)
exten => 2,n,Set(TIMEOUT(response)=10)
exten => 2,n,DISA(no-password,disa-dial)
exten => 2,n(end),Hangup
exten => 3,1,Answer
exten => 3,n,Set(_DISA=disa^3^newcall)
exten => 3,n(newcall),Set(_DISACONTEXT=from-internal)
exten => 3,n,Set(_KEEPCID=TRUE)
exten => 3,n,Set(_HANGUP=${TRUNK_OPTIONS})
exten => 3,n,Set(TIMEOUT(digit)=5)
exten => 3,n,Set(TIMEOUT(response)=10)
exten => 3,n,DISA(no-password,disa-dial)
exten => 3,n(end),Hangup

; end of [disa]

เห็นมั๊ยครับว่ามี 3 อัน 1 คือ Dialtone(1), 2 คือ For Callback(2) และ 3 คือ Callcenter(3)
ออกจากไฟล์

5. แก้ไขไฟล์ /etc/asterisk/extensions.conf
ไฟล์นี้แก้ไขได้นะครับ ไม่ต้องกลัวว่าเวลากด Apply Configuration Changes Here แล้วข้อมูลมันจะหาย
ค้นหา [from-internal] ครับ แล้วเติมบรรทัดต่อไปนี้เข้าไป บรรทัดไหนมีแล้วก็ไม่ต้องเพิ่มเข้าไปนะครับ เดี๋ยวจะใช้งานไม่ได้

โค้ด: เลือกทั้งหมด
[from-internal]
include => from-internal-xfer
include => bad-number

exten => 9,1,Noop(Generating Dialtone)
exten => 9,n,Macro(user-callerid,)
exten => 9,n,Goto(disa,1,1)

ที่ให้เพิ่มคือ 3 บรรทัดล่างหน่ะครับ บรรทัดที่ 3 เรียกไปยัง Context [disa] exten 1 บรรทัด 1 ตามหัวข้อที่ 5
เซฟไฟล์

6. รีโหลด Dialplan
รันคำสั่งนี้จาก Linux Prompt
โค้ด: เลือกทั้งหมด
asterisk -rx "dialplan reload'

หรือคำสั่งนี้จาก Asterisk Console
โค้ด: เลือกทั้งหมด
dialplan reload


7. โทรทดสอบดูครับ
กด 9 จะได้ยินเสียง Dialtone แล้ว จากนั้นกดเบอร์ปลายทาง เสียง Dialtone จะดับเมื่อเรากดเลขหลักแรก ค่าเวลา Timeout ต่างๆเป็นไปตามที่เราตั้งไว้ตอนคอนฟิก DISA ครับ ซึ่งได้แก่

Response Timeout - ระยะเวลารอ (เป็นวินาที) นับจาก Asterisk ทำเสียง Dialtone ออกมาแล้ว ถ้าเราไม่กดตัวเลขใดๆภายในระยะเวลานี้ Asterisk จะวางสาย
Digit Timeout - ระยะเวลารอ (เป็นวินาที) นับจากที่เรากดตัวเลขแล้ว (กี่หลักก็ได้) แล้วเราไม่กดตัวต่อไป เมื่อหมดเวลานี้ Asterisk จะโทรไปยังเบอร์ที่เรากด

หมดแล้วครับสำหรับเทคนิคแปลกๆที่ว่าต้องการเสียง Dialtone ก่อนกดเบอร์ปลายทาง ถึงแม้จะได้ยินเสียง Dialtone ก็ตาม มันไม่ใช่ Dialtone ที่ส่งมาจาก Trunk ภายนอก มันเป็น Dialtone ที่ Asterisk ทำขึ้นมาเอง ซึ่งตามปกติคนใช้งานจะคิดว่าได้สัญญาณว่างมันน่าจะโทรได้นี่นา บางทีถ้าโทรไม่ออกก็จะทำให้คนใช้งานงงได้เหมือนกันนะครับ

หวังว่าจะช่วยแก้ปัญหาการใช้งานของท่านได้นะครับ

บทความที่เกี่ยวข้อง
เทคนิคกด 9 ได้ยิน Dial Tone แล้วค่อยกดเบอร์โทรออก บน Linksys
เทคนิคการติดตั้ง Elastix 2.5
Elastix

Re: เทคนิคการโทรออกโดยกด 9 รอ Dial Tone แล้วจึงกดเบอร์ปลายทาง

โพสต์โพสต์แล้ว: 22 ต.ค. 2012 00:33
โดย nuiz
บทความนี้เขียนเสร็จแล้ว ลองใช้งานดูครับ