การใช้งาน Asterisk Voicemail ตอนที่ 1

Asterisk Opensource IP Pbx

การใช้งาน Asterisk Voicemail ตอนที่ 1

โพสต์โดย voip4share » 22 ม.ค. 2010 13:56

ดาวน์โหลดบทความ Asterisk Voicemail

บทความเกี่ยวกับ Asterisk Voicemail นี้นะครับ ผมจะแยกออกเป็น 3 ตอน เพราะผมต้องการนำเสนอแบบละเอียดมากที่สุดเท่าที่จะมากได้ ถ้าเขียนในตอนเดียวเลยกระทู้มันจะยาวเกินไป เกรงว่าจะเบื่อกันซะก่อน ทั้ง 3 ตอนมีหัวข้อดังนี้

ตอนที่ 1 การคอนฟิกไฟล์ที่เกี่ยวข้อง
ตอนที่ 2 การส่ง Voicemail เข้าอีเมล์
ตอนที่ 3 การกดเข้าไปฟัง Voicemail และออปชั่นที่มีให้เลือก

มาเริ่มจากตอนที่ 1 กันเลยครับ

ตอนที่ 1 ว่าด้วยไฟล์ที่เกี่ยวข้องและวิธีการคอนฟิก

1 ไฟล์คอนฟิก
ไฟล์ที่เกี่ยวข้องกับการทำ Voicemail มีอยู่ 3 ไฟล์นะครับ คือ sip.conf, voicemail.conf และ extensions.conf มาดูทีละไฟล์กันเลยครับ

1.1 ไฟล์ /etc/asterisk/sip.conf
ให้เพิ่มบรรทัด mailbox ไว้ในเบอร์ Extension แต่ละเบอร์ รูปแบบคือ mailbox=mailbox_number@voicemail_context โดยที่ mailbox_number เป็นหมายเลขของ Mailbox ซึ่งก็คือเบอร์ Extension นั่นเองครับ ส่วน voicemail_context เป็น context ที่อยู่ในไฟล์ voicemail.conf ครับ โดยผมจะใช้ context ชื่อ voip4share
ถ้าเราไม่ใส่ voicemail_context ต่อท้าย เช่นบรรทัดนี้เราใส่แค่ mailbox=100 มันจะหมายถึง context ที่ชื่อ [default] ในไฟล์ voicemail.conf นะครับ ดังนั้นถ้าจะใช้ context ชื่ออื่นก็อย่าลืมใส่เข้าไปด้านหลังด้วยนะครับ เดี๋ยวจะไม่เวอร์ค

[general]
notifymimetype=application/simple-message-summary
vmexten=*99

[100]
context=from-internal
mailbox=100@voip4share

[101]
context=from-internal
mailbox=101@voip4share

1.2 ไฟล์ /etc/asterisk/voicemail.conf

[general]
format=wav49|gsm
attach=yes
maxmsg=100
;userscontext=default
maxecs=180
minsecs=3
maxgreet=60
skipms=3000
maxlogins=3

[default]
;mailbox_number => password, name, email

[voip4share]
100 => 100, Nui, nui@voip4share.com
101 => 101, Kik, kikka@hotmail.com
102 => 102, Joy, joyza@gmail.com

ในไฟล์ voicemail.conf นี้นะครับ มี context ดีฟอลท์ชื่อว่า default อยู่ ปกติเราจะสร้าง Mailbox ไว้ภายใต้ context นี้ แต่ว่าผมอยากแสดงให้เห็นว่าเราไม่ต้องใช้ [default] ก็ได้ สร้างใหม่ด้วยชื่ออะไรก็ได้ถ้าต้องการ ผมตั้ง context ใหม่ใช้ชื่อว่า voip4share แล้วสร้าง Mailbox ไว้ภายใต้ context นี้
รูปแบบการสร้าง Mailbox แบบพื้นๆคือ mailbox_number => password แค่นี้ก็ใช้งานได้แล้วครับ ซึ่ง password ก็คือพาสเวอร์ดทีเราต้องใส่เข้าไปเพื่อให้เข้าไปฟัง Voicemail ใน Mailbox ของเราได้ นอกจาก password แล้วเราก็อาจจะใส่ name, email ด้วยก็ได้ ดังที่ผมแสดงให้ดูในตัวอย่าง

1.3 ไฟล์ /etc/asterisk/extensions.conf
ไฟล์นี้เป็น Dial Plan สร้างเบอร์ไว้ 4 เบอร์ เป็นเบอร์ Extension 3 เบอร์ และเบอร์กดฟัง Voicemail อีก 1 เบอร์ ดังนี้

วิธีการเขียน Dialplan สำหรับ Voicemail

[from-internal]

exten => 100,1,Dial(SIP/100,30,tTr)
exten => 100,2,Voicemail(u100@voip4share)
exten => 100,102,Voicemail(b100@voip4share)

exten => 101,1,Dial(SIP/101,30,tTr)
exten => 101,2,Voicemail(u101@voip4share)
exten => 101,102,Voicemail(b101@voip4share)

exten => 102,1,Dial(SIP/102,30,tTr)
exten => 102,2,Voicemail(u102@voip4share)
exten => 102,102,Voicemail(b102@voip4share)

; Dial *99 to Listen to Mailbox
exten => *99,1,VoiceMailMain(@voip4share)

คำสั่ง Voicemail เป็นการโอนสายไปเข้าวอยส์เมล์ครับ รูปแบบคำสั่งคือ Voicemail(mailbox_number@voicemail_context) โดยที่ voicemail_number คือเบอร์ Mailbox ซึ่งปกติก็เบอร์ Extension นั่นแหล่ะครับ ส่วน voicemail_context ก็คือ context ในไฟล์ voicemail.conf
คำสั่ง VoiceMailMain เป็นคำสั่งที่ใช้เข้าไปฟัง Voicemail ผมตั้งว่า กด *99 เพื่อฟัง Voicemail

รายละเอียดของแต่ละ Extension เป็นดังนี้ครับ
บรรทัดที่ 1 หรือ Priority 1 โทรไปยังเบอร์ Extension
บรรทัดที่ 2 หรือ Priority 2 ถ้าไม่รับสายภายใน 30 วินาทีหรือไม่สามารถติดต่อเบอร์ Extension ได้ ก็จะส่งเข้า Voicemail
บรรทัดที่ 3 หรือ Priority 102 ถ้าเบอร์ Extension ไม่ว่าง ตัวเลข 102 ผมไม่ได้ตั้งตามใจชอบนะครับ มันมีที่มาที่ไป ซึ่ง Asterisk กำหนดไว้ว่าถ้าจะเขียน Dialplan ที่เช็คว่า Extension Busy หรือเปล่าให้ใช้ Priority = 101+n โดยที่ n เป็น Priority ที่ใช้คำสั่ง Dial ครับ กรณีนี้ n=1

2 รีโหลด dialplan, voicemail, sip
เข้า Asterisk Console แล้วพิมพ์คำสั่งต่อไปนี้
dialplan reload
voicemail reload
sip reload

เท่านี้ก็ฝากข้อความและเช็คข้อความใน Maixbox ได้แล้วครับ

3 ไดเร็คตอรี่เก็บ Voicemail
ถ้ามีใครฝากข้อความไว้ใน Mailbox ข้อความนั้นจะถูกเก็บไว้ที่ไดเร็คตอรี่ /var/spool/asterisk/voicemail/<voicemail_context>/<mailbox_number>/INBOX เช่นถ้าผมฝากข้อความไว้ที่ Mailbox ของเบอร์ 101 ข้อความจะถูกเก็บไว้ที่ไดเร็คตอรี่ /var/spool/asterisk/voicemail/from-internal/101/INBOX

4 การแจ้งเตือนว่ามีข้อความใน Mailbox
Asterisk มีความสามารถแจ้งแก่เบอร์ Extension ว่ามีข้อความฝากไว้ใน Mailbox ได้ด้วยนะครับ โดยเมื่อใดก็ตามที่มีข้อความและ Asterisk ตรวจสอบพบว่าเบอร์ Extension นั้นออนไลน์แล้ว มันจะส่ง NOTIFY ไปบอกเบอร์ดังกล่าว พร้อมบอกจำนวนข้อความที่ยังไม่ได้เปิดอ่าน (เปิดฟัง) เราเรียกฟีเจอร์นี้ว่า Message Waiting Indication (MWI) ถ้าอุปกรณ์ SIP ที่ใช้งานรองรับ MWI มันก็จะแสดงให้เรารู้ว่ามี Voicemail ฝากไว้ โดยอาจจะแสดงเป็นตัวหนังสือ เช่น "Unread Message" หรือมีไฟกระพริบบนหน้าจอก็ได้

NOTIFY sip:100@192.168.5.88:3582;rinstance=d3574279b03712b9 SIP/2.0..Via: SIP/2.0/UDP 203.147.1.200:5060;branch=z9hG4bK15df674c
;rport..Max-Forwards: 70..From: "voip4share" <sip:voip4share@203.147.1.200:5060>;tag=as1f2ffad2..To: <sip:100@192.168.5.88:3582
;rinstance=d3574279b03712b9>..Contact: <sip:voip4share@203.147.1.200:5062>..Call-ID: 2a7cae6d41705e180ba70e9172892a95@203.147.1.200
..CSeq: 102 NOTIFY..User-Agent: voip4share v1.85..Event: message-summary..Content-Type: application/simple-message-summary.
.Content-Length: 99....Messages-Waiting: yes..Message-Account: sip:asterisk@203.147.1.200:5060..Voice-Message: 4/0 (0/0) ..

ถ้าในไฟล์ /etc/asterisk.conf เราเพิ่มบรรทัด vmexten (ซึ่งก็คือเบอร์ Extension ที่เราจะโทรเข้าไปฟัง Voicemail) เข้าไปด้วย เพิ่มอยู่ใน [general] นะครับ ก็จะทำให้มีเบอร์นี้ปรากฏอยู่ใน NOTIFY ด้วย ข้อดีคือถ้าอุปกรณ์ที่ใช้มีปุ่มกดฟัง Voicemail มันก็จะโทรเข้าไฟฟัง Voicemail โดยที่เราไม่ได้ต้องกด ตัวอย่างเช่น กดเบอร์ *99 ฟังวอยส์เมล์

[general]
vmexten = *99

มาดู NOTIFY หลังจากที่ผมเพิ่ม vmexten=*99 เข้าไปในไฟล์ sip.conf กันครับ จะเห็นว่ามี *99 อยู่ใน NOTIFY ด้วย

NOTIFY sip:100@192.168.5.88:3519;rinstance=95f593532d8a648c SIP/2.0..Via: SIP/2.0/UDP 203.147.1.200:5060;branch=z9hG4bK5b8ecf8a
;rport..Max-Forwards: 70..From: "voip4share" <sip:voip4share@203.147.1.200:5060>;tag=as19b8f210..To: <sip:100@192.168.5.88:3519
;rinstance=95f593532d8a648c>..Contact: <sip:voip4share@203.147.1.200:5060>..Call-ID: 1a5a1dae41f523155608a7e953d200b4@203.147.1.200
..CSeq: 102 NOTIFY..User-Agent: voip4share v1.85..Event: message-summary..Content-Type: application/simple-message-summary.
.Content-Length: 95....Messages-Waiting: yes..Message-Account: sip:*99@203.147.1.200:5060..Voice-Message: 10/0 (0/0)..

จะมีเบอร์ *99 อยู่ตอนท้ายของ Message ครับ และเราอาจจะเพิ่มบรรทัดต่อไปนี้เข้าไปในไฟล์ sip.conf ด้วยก็ได้นะครับ

[general]
notifymimetype=application/simple-message-summary
notifyhold=yes
vmexten=*99

บทความ Asterisk Voicemail ตอนที่ 2
voip4share
Administrator
 
โพสต์: 656
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 11:26
ที่อยู่: รามคำแหง กรุงเทพฯ

ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 2 ท่าน