# Asterisk Tutorial 17-Asterisk Voicemail Dial Plan Config

## Introducing Asterisk Phone Systems – Asterisk Voicemail Dial Plan Setup

Welcome to part II of our Voicemail tutorials. Curiously, I wrote a piece yesterday based on research from our friends at Software Advice over in the USA. Basically the article is Small Business VoIP Buyers Guide, but rather interestingly, one of the top applications that SMBs look for in their IP communications systems is Voicemail. Just further proof that having a top notch voicemail system is pretty much up there with the most essential applications of any phone system.

So following on from where we left off. If you remember last time we set about setting up the actual voicemail system and our voicemail boxes. But now the question is: how do we get an incoming call to be directed to our voicemail if we are not about to actually answer the call? Watch on and find out all you need to know about which applications are required as well as how to configure the your dial plans to enable leaving & retrieving messages.

## Quick Tips

Before starting, make sure you turn off call waiting on your softphone. Otherwise our test configurations probably won’t work!

In order to view all the applications relating to voicemail, use the command:

core show applications like mail


within the Asterisk CLI. This will generate a screen as shown below:

Asterisk*CLI> core show applications like mail
-= Matching Asterisk Applications =-
MailboxExists: Check to see if Voicemail mailbox exists.
VoiceMail: Leave a Voicemail message.
VoiceMailMain: Check Voicemail messages.
VoiceMailPlayMsg: Play a single voice mail msg from a mailbox by msg id.
-= 4 Applications Matching =-


It is worth noting that the application MailboxExists is particularly useful for checking if a mailbox actually exists within dynamic environments, as not everybody may have a voicemail box. The next application in the list, Voicemail, allows callers to actually leave you a message while the application VoicemailMain refers to the application that allows you retrieve and listen to your messages.

## Leaving Messages

The next step is to look at the applications themselves, particularly the syntax associated with each application. To do this, use the command core show application voicemail, where voicemail is the application name. This will then open the application documentation, provide an example of how to formulate the syntax which is important for the dialplan configurations along with providing explanations regarding the Argument options, but we will cover these options in more detail next time.

Next we need to configure our dialplan in order to allow us to actually leave a message.

To do this, go to your dialplan and within the context phones (as it is in our example) add a “time out” to the dial application settings as shown by the number 5 in our example. Next add a new line below that includes the Voicemail application and corresponding syntax. If you want to keep your dialplan really simple for testing purposes, then use the voicemail box numbers you setup when configuring the actual voicemail system. However, you could save some time by using the ${EXTEN} variable, should you be configuring multiple extensions at the same time, as in our example below: [phones] using voicemail box number exten => 100,1,NoOp(Call for Mathias) same => n,Dial(SIP/mathias,5) same => n,Voicemail(100) same => n,Hangup  Or using EXTEN: [phones] using EXTEN exten => 100,1,NoOp(Call for Mathias) same => n,Dial(SIP/mathias,5) same => n,Voicemail(${EXTEN})
same => n,Hangup


In order to be able to call your voicemail you will need to integrate the Application_VoiceMailMain within your dialplans. For you to get a good idea of how to do this, we have demonstrated the most basic of integration options, which we will then work on and improve in our next tutorial.

But just as we did with leaving a message, take a look at the VoiceMailMain application using the command as described above using the appropriate application name. This will allow you to take a look at the syntax as well as any arguments that the application uses and what they mean.

Next go back to your dialplan and under the context phones add a new extension using for example *100 as shown below, set the priority and then the application followed by extension number in brackets:

exten => *100,1,VoiceMailMain(100)
same => n,Hangup