อ่านแล้วค่อยๆทำความเข้าใจไปนะครับ เขียนตอบขณะกำลัง ง่วงงงงง อาทิตย์นี้ไม่ได้หยุดสักวันเลย
ถึงจะใช้ Elastix, FreePBX ก็ทำได้ไม่ยากครับ เพิ่ม context และ include ในไฟล์ extensions.conf ไฟล์ๆนี้แก้ไขได้เลยครับ (ไฟล์ที่แก้ไขไม่ได้คือไฟล์ที่มีคำว่า additional อยู่ เช่น extensions_additional.conf)
สมมติว่า 5 เบอร์แรกอยู่ context = from-internal ส่วน 5 เบอร์หลังอยู่ context=from-internal-2
ดูที่ไฟล์ extensions.conf ค้นหา [from-internal]
ใส่บรรทัด include => from-internal-2 เพิ่มเข้าไป จะใส่ไว้ใต้ [from-internal] เลยหรือว่าใส่ต่อบรรทัดที่มีอยู่แล้วก็ได้ แบบนี้
[from-internal]
include => from-internal-xfer
include => from-internal-2เซฟไฟล์ แล้วพิมพ์ asterisk -rx "dialplan reload' จาก Linux Prompt ทำแค่นี้ก็จะทำให้ Extension ที่อยู่ใน context=from-internal โทรหา Extension ที่อยู่ใน context=from-internal-2 ได้แล้วครับ แต่ว่า Extension ใน context=from-internal-2 ยังโทรย้อนกลับมาไม่ได้ ต้องทำเพิ่มแบบนี้ครับ
ไฟล์ extensions.conf ไฟล์เดิม เพิ่ม [from-internal-2] เข้าไป เพิ่มถัดจาก [from-internal] ก็ได้ครับ แบบนี้
[from-internal]
include => from-internal-xfer
include => from-internal-2[from-internal-2]
include => from-internal
exten => _9X.,1,Hangup
เสร็จหล่ะครับ เซฟไฟล์แล้วพิมพ์ asterisk -rx "dialplan reload" แล้วก็ลองได้เลยครับ
สังเกตุนิดนะครับว่าใน [from-internal-2] นั้น ถ้ายูสเซอร์กด 9 นำหน้า Asterisk จะตัดสายเลย ถ้าอยากให้มีเสียงบอกประมาณว่า ขออภัยค่ะท่านไม่ได้รับอนุญาตให้กดหมายเลขนี้ ก็ให้อัดเสียง แปลงเสียงให้เป็นฟอร์เม็ต Windows PCM, 8000 Hz, 16 Bit, Mono ก่อน แล้วอัพโหลดเข้าเซอร์เวอร์ด้วยเมนู PBX-> System Recordings สมมติว่าตั้งชื่อไฟล์เป็น sorry-you-are-not-authorized แล้วเขียนใหม่แบบนี้ครับ
[from-internal-2]
include => from-internal
exten => _9X.,1,Playback(custom/sorry-you-are-not-authorized)
exten => _9X.,n,Hangup
ถ้าสงสัยว่าทำไมมันสั้นจัง ครับมันสั้นๆแค่นี้แหล่ะแต่รับรองทำงานได้อย่างที่ต้องการได้ชัวร์ ถ้าจะให้ผมอธิบายการทำงาน ก็จะอธิบายประมาณว่า
สมมติว่า extensions 100 อยู่ context=from-internal และ extensions 200 อยู่ context=from-internal-2
เบอร์ 100 กดหา 200, asterisk จะมองหาเบอร์ 200 มันก็จะรู้จาก dialplan ว่าต้องโทรหาเบอร์ 200 ยังไง ด้วย protocol อะไร แต่เนื่องจากเบอร์ 200 มันอยู่ context=from-internal-2 ซึ่งอยู่คนละ context กัน ปกติจะทำไม่ได้ แต่การที่เราใส่บรรทัด include=>from-internal-2 ไว้ด้วย เป็นการบอกว่าเรายอมให้มีการโทรข้าม context กันได้ จึงทำให้มันโทรหาเบอร์ 200 ได้ ก็ประมาณนี้หน่ะครับ
สนใจทำเสียงพูด IVR ภาษาไทย ตามบทความนี้ครับ
Text-To-Speech ภาษาไทยลองดูครับ ติดขัดตรงไหนโพสต์ถามใหม่นะครับ
นอนก่อนครับ