การใช้งาน Voicemail ใน Asterisk

1

การใช้งาน Asterisk Voicemail
ยังมีบทความเกี่ยวกับ Asterisk, Elastix, CentOS และ VoIP อีกมากมายครับที่ http://www.voip4share.com
บทความเกี่ยวกับ 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

บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk

2

[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 ด้วยก็ได้ ดังที่ผมแสดงให้ดู
ในตัวอย่าง
บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk

3

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
บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk

4

บรรทัดที่ 3 หรือ Priority 102 ถ้าเบอร์ Extension ไม่ว่าง ตัวเลข 102 ผมไม่ได้ตั้งตามใจชอบนะครับ มันมีที่มาที่ไป ซึ่ง Asterisk กาหนดไว้ว่า
ถ้าจะเขียน Dialplan ที่เช็คว่า Extension Busy หรือเปล่าให้ใช้ Priority = 101+n โดยที่ n เป็น Priority ที่ใช้คาสั่ง Dial ครับ กรณีนี้ n=1
2 รีโหลด dialplan, voicemail, sip
เข้า Asterisk Console แล้วพิมพ์คาสั่งต่อไปนี้
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

บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk

5

มาดู 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
มาดูการใช้งาน Voicemail ใน Asterisk ตอนที่ 2 กันเลยครับ ซึ่งจะว่ากันด้วยการส่ง Voicemail เข้าอีเมล์ คอนฟิกหลักจะอยู่ที่ไฟล์
/etc/asterisk/voicemail.conf ครับ มาดูหลักการทางานของมันก่อนนะครับ
"เมื่อมีคนฝากข้อความไว้ใน Mailbox เสร็จแล้ว Asterisk จะเช็คในไฟล์ voicemail.com ว่าหมายเลข Mailbox นั้นมีคอนฟิกว่าให้ส่งเข้าอีเมล์
หรือไม่ ถ้ามีมันก็จะดาเนินการส่งไปยังอีเมล์ที่ระบุไว้ โดยอาจจะแค่ส่งข้อความไปแจ้งเฉยๆว่ามี Voicemail ฝากไว้แล้วผู้รับก็กดฟัง หรือ
อาจจะส่งข้อความเสียง Voicemail แนบไปกับอีเมล์ด้วยพร้อมๆกันเลย หรือส่งข้อความแนบไปกับอีเมล์แล้วให้ลบข้อความใน Mailbox ด้วย
เป็นไปได้หมดครับ"
1 คอนฟิก voicemail.conf เพื่อให้ส่งอีเมล์
รายละเอียดทั้งหมดของไฟล์ voicemail.conf ครับ หากสนใจก็คลิ๊กเข้าไปดูได้เลย ในที่นี้ผมจะโฟกัสเฉพาะที่เกี่ยวข้องกับการส่ง Voicemail
เข้าอีเมล์
[general]
format=wav49|gam
; ระบุผู้ส่ง (From)
serveremail=voicemail@voip4share.com
; แนบ Voicemail ไปกับอีเมล์หรือไม่
attach=yes
บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk
6
; รูปแบบไฟล์ที่จะแนบไป
attachfmt=wav49
; บอกว่าเบอร์ Extension ไหนเป็นคนฝาก Voicemail ไว้
saycid=yes
; บอกความยาวของ Voicemail
sayduration=yes
; ลบ Voicemail เมื่อส่งเข้าอีเมล์แล้ว
delete=yes
; เป็น Subject ของอีเมล์
emailsubject=[PBX]: New message ${VM_MSGNUM} in mailbox ${VM_MAILBOX}
; เป็น Body ของอีเมล์
; \n หมายถึงขึ้นบรรทัดใหม่, \t หมายถึง Tab
emailbody=Dear ${VM_NAME}:\n\n\tjust wanted to let you know you were just left a ${VM_DUR} long message (number
${VM_MSGNUM})\nin mailbox ${VM_MAILBOX} from ${VM_CALLERID}, on ${VM_DATE}, so you might\nwant to check it when
you get a chance. Thanks!\n\n\t\t\t\t--VoIP4Share Service\n
; รูปแบบวันที่ในอีเมล์ รูปแบบ 24 ชั่วโมง
emaildateformat=%A, %d %B %Y at %H:%M:%S
; คาสั่งที่จะใช้ตอนส่งอีเมล์ออก
mailcmd=/usr/sbin/sendmail -t
; เซ็ต Timezone
tz=Asia/Bangkok
ต่อไปเราจะสร้าง Mailbox ภายใต้คอนเท็ค voip4share นี้เป็นรายละเอียดพร้อมตัวอย่างการสร้างบรรทัด Mailbox ที่ผมยกมาให้ดูด้านล่าง
ครับ (เผื่อจะสงสัยว่าเขียนกันยังไง)
[default]
; ผมไม่ได้สร้าง Mailbox ไว้ภายใต้คอนเท็ค default นะครับ เพราะว่าในไฟล์ sip.conf ผมเขียนเป็นแบบนี้
mailbox=Mailbox_Number@voip4share ซึ่งแสดงว่าผมต้องสร้าง Mailbox ไว้ภายใต้คอนเท็ค voip4share
[voip4share]
100 => 1234, Khun Nui, nuiz@voip4share.com
101 => 2532, Khun Kik, kikka@hotmail.com
102 => 1820, Khun Joiz, joyza@gmail.com
103 => 1234, Khun Aoo, aooz@voip4share.com,,delete=0|emailsubject=You have a new voicemail.|emailbody=Click on the

บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk
attachment to listen|tz=european

7

เสร็จแล้วบันทึกไฟล์ แล้วเข้า Asterisk Console จากนั้นใช้คาสั่ง module reload app_voicemail.so เพื่อเริ่มการทางานของ Voicemail ใหม่
2 ตัวอย่างอีเมล์
ตัวอย่าง Voicemail ที่ส่งเข้าอีเมล์ เป็นดังรูปครับ

Asterisk Voicemail To Email
voicemail-to-mail.jpg (86.65 KiB) เปิดดู 57 ครั้ง
ข้อความที่อยู่ในอีเมล์ทั้ง From, Body และ Subject เราแก้ไขได้นะครับ โดยแก้ไขที่บรรทัด serveremail, emailbody และ emailsubject ใน
ไฟล์ /etc/asterisk/voicemail.conf

การใช้งาน Asterisk Voicemail ตอนที่ 3
สาหรับการใช้งาน Asterisk Voicemail ตอนที่ 3 นี้นะครับ จะพูดถึงการกดเข้ามาฟัง Voicemail รวมทั้งออปชั่นที่มีให้กดเลือกด้วยนะครับว่ามี
อะไรบ้าง
1 สร้างเบอร์ Extension พิเศษสาหรับโทรเข้ามาฟัง Voicemail
คงยังไม่ลืมนะครับว่าเบอร์ Extension จะโทรไปเบอร์ใดเบอร์หนึ่งได้นั้น เราต้องสร้างเบอร์ไว้ในไฟล์ /etc/asterisk/extensions.conf ซะก่อน
(หรือที่เรียกว่าสร้าง Dial Plan หน่ะครับ) ซึ่งเบอร์ Extension เบอร์นี้ต้องไม่ซ้ากับเบอร์ที่มีอยู่แล้วใน context เดียวกัน มาดูกันเลยดีกว่าครับ
ผมจะสร้างเบอร์ *99 ไว้สาหรับโทรเข้ามาเช็ค Voicemail
บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk

8

เขียน Dial Plan ของเบอร์ *99 ไว้ภายใต้คอนเท็ค [from-internal] นะครับ เพราะว่าตอนสร้าง Client ในไฟล์ sip.conf เราใส่บรรทัด
context=from-internal ไว้
ไฟล์ /etc/asterisk/extensions.conf
[from-internal]
exten => *99,1,VoiceMailMain(@voip4share)
บันทึกไฟล์ จากนั้นเข้า Asterisk Console แล้วพิมพ์คาสั่ง dialplan reload แค่นี้ครับ
2 กดโทรเข้ามาฟัง Voicemail
ใช้เบอร์ Extenstion เบอร์ไหนก็ได้ กดมาที่เบอร์ *99 จะได้ยินเสียงว่า "Comedian Mail, Mailbox" ให้กดหมายเลข Mailbox เช่น 100 แล้วจะ
มีเสียงว่า "Password" ก็ให้กดพาสเวอร์ดของ Mailbox ตามด้วยเครื่องหมาย # เช่น 1234#
จะมีเสียงบอกออปชั่นต่างๆดังต่อไปนี้
1 Old Messages
3 Advanced options
- 1 Send reply
- 2 Call back
- 3 Envelope
- 4 Outgoing call
- 5 Leave message
- * Return to main menu
4 Play previous message
5 Repeat current message
6 Play next message
7 Delete current message
8 Forward message to another mailbox
9 Save message in a folder
บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

การใช้งาน Voicemail ใน Asterisk
* Help; during msg playback: Rewind
# Exit; during msg playback: Fastforward
2 Change folders
3 Advanced options
0 Mailbox options
- 1 Record your unavailable message
- 2 Record your busy message
- 3 Record your name
- 4 Change your password
- * Return to the main menu
* Help
# Exit
และขณะฟังข้อความที่บันทึกไว้ สามารถใช้อีก 2 ปุ่ม ได้แก่
# to fastforward
* to rewind

บทความโดย คุณหนุ่ย แห่งเว็บ www.voip4share.com

9

Sign up to vote on this title
UsefulNot useful