System information
If callers press 8, they’ll get a directory by first name. If they dial 9, they’ll get the
directory by last name.
Using a Jitterbuffer
When using Asterisk as a voicemail server,
§
you may want to add a jitterbuffer in be-
tween voicemail and the caller. The purpose of a jitterbuffer is to help deal with the
fact that when a call traverses an IP network, the traffic may not arrive with perfect
timing and in perfect order. If packets occasionally arrive with a bit of delay (jitter) or
if they arrive out of order, a jitterbuffer can fix it so that the voicemail system receives
the voice stream on time and in order. If the jitterbuffer detects that a packet was lost
(or may arrive so late that it will no longer matter), it can perform packet loss conceal-
ment. That is, it will attempt to make up a frame of audio to put in place of the lost
audio to make it harder to hear that audio was lost.
In Asterisk, jitterbuffer support can only be enabled on a bridge between two channels.
In the case of voicemail, there is generally only a single channel connected to one of the
voicemail applications. To enable the use of a jitterbuffer in front of voicemail, we create
a bridge between two channels by using a Local channel and specifying the j option.
Specifying the n option for the Local channel additionally ensures that the Local channel
is not optimized out of the call path in Asterisk:
[Services]
exten => *98,1,Dial(Local/vmm@Services/nj)
exten => vmm,1,VoiceMailMain()
Storage Backends
The storage of messages on a traditional voicemail system has always tended to be
overly complicated.
‖
Asterisk, on the other hand, not only provides you with a simple,
logical, filesystem-based storage mechanism, but also offers a few extra message storage
options.
Linux Filesystem
By default, Asterisk will store voice messages in the spool folder, at /var/spool/asterisk/
voicemail/<context>/<mailbox>. The messages can be stored in multiple formats (such
§ This advice applies to any situation where Asterisk is the endpoint of a call. Another example would be when
using the MeetMe() or ConfBridge() applications for conferencing.
‖ Nortel used to store its messages in a sort of special partition, in a proprietary format, which made it pretty
much impossible to extract messages from the system, or email them, or archive them, or really do anything
with them.
172 | Chapter 8: Voicemail