Voice Menus and IVR in AsteriskNOW

Four Rules of IVR

IVR systems can be hell to use; the main reason for this is that people designing IVR systems tend to complicate their functionality beyond the normal usage scope of a human being. The following four rules will enable you to implement a usable, humanly accessible, and maintainable IVR.

  • Rule 1—Keep it narrow: Your IVR should be kept as simple as possible. Make sure that each of your steps in the IVR environment is not longer than five options. Most IVR users aren't able to remember all the options of an IVR system, when presented with a multitude of IVR options.
  • Rule 2—Keep it shallow: Your IVR system's depth is in direct relation to the complexity of the IVR application. If your application has more than four levels, you need to revise your IVR plan. Most people (including yours truly) become extremely aggravated when confronted with an IVR system that is asking for too much information.
  • Rule 3—Enable escape routes: Always give your IVR user the ability to break out of the IVR flow and talk to a live person. Some people simply can't handle the usage of an IVR system.
  • Rule 4—If it works, don't fix it!: For some reason, companies tend to change their IVR flows every other day to support a new business model. An IVR system that constantly changes is a nightmare for users, as they never get used to the options of the system. If you must perform an update, make sure that your update doesn't affect that system in such a way that the users need to re-learn the system.

Voice Menus—AsteriskNOW's IVR Generator

AsteriskNOW provides a highly simplistic IVR generator, rightfully named—Voice Menus. The main usage of an IVR in a PBX is the implementation of an "Auto Attendant".

Some PBX systems refer to auto-attendant and IVR as two different things. In AsteriskNOW, they are one and the same.

At this point, click the Voice Menus link, located on your left-hand main menu. The following should appear on your screen:

Voice Menus and IVR in AsteriskNOW

This interface enables editing, creation, or deletion of voice menus. Each menu is built from a set of operational directives (Steps) and functional keys (Keypress Events). Each voice menu also receives a mandatory name (Name), a form of logical entity description, and an Extension number (optional). The extension number enables PBX extensions or external users to dial into the specific voice menu indicated by the extension number.

Voice Menu Steps—The Voice Menu Flow

Steps are performed one after the other, in the order they appear on the screen. There are seventeen possible steps, available through the AsteriskNOW GUI.

Once a step had been selected, the GUI will change, indicating the requirement for additional fields to be filled. The seventeen available steps are as follows:

Step Type




Answers the call-usually the first step of every voice menu



Asks the user to enter a password using the keypad. The password is compared with the information in the step directive.

Password to authenticate against-numeric only.


Plays a voice file, allowing the user to interrupt the playback by pressing a key.

File to playback from the AsteriskNOW recordings database.

Busy Tone

Generates a busy tone to the calling user.



Indicates congestion to the calling user.



Sets the maximum timeout between digit presses.

Time in seconds.


Activates the DISA application (DISA-Direct Inward System Access).

DISA authentication password-numeric only.


Sets the maximum timeout waiting for a response from the user.

Time in seconds.


Plays a voice file - without interruptions from the user

File to playback from the AsteriskNOW recordings database.


Waits a certain amount of time.

Time in seconds.


Waits a certain amount of time for the user to dial a new extension number.

Time in seconds.

Goto Menu

Goes to a predefined voice menu.

Voice menu name from the database.

Goto Directory

Goes to the PBX directory system.


Goto Extension

Rings a specific extension.

Extension number from the AsteriskNOW users database.

Goto TimeBasedRule

Goes to a predefined time based rule.

Time Based Rule from the AsteriskNOW time rule database.

Dial RingGroup

Rings a predefined number of extensions.

Ring group number from the AsteriskNOW ring group database.


Hangs up the call.




At this point, you may have encountered new elements, about which you have no knowledge of what they are and how they work. These include the following: DISA, Recordings, Time Based Rules and Ring Groups. Let's learn more about the step types—what they are, how they are configured in AsteriskNOW, and later, how they are used within the Voice Menu construct.

DISA—Direct Inward System Access

DISA operation enables an enterprise to allow its users to dial in to the enterprise PBX system, authenticate via a personal code, and then utilize the enterprise PBX system to perform dialling functions, as if they were located back at their office desk.

Most installations utilize DISA services to allow their employees access to long distance calling facilities, without enabling these calling facilities from their cellular phones. DISA services became especially popular with the introduction of cellular VPN (Virtual Private Network) services, creating a zero-charge group between an enterprise's PBX system and an employee's cellular phone.

Recordings—Menus and System Playbacks

Like any normal PBX, AsteriskNOW requires recorded messages to provide the various menus and user messages building up the user interaction. Now, while the following may sound a little confusing, message recording is performed utilizing the Record a Menu link, from the main menu—don't let the name of the link fool you—once a file is recorded, it can be utilized as either a menu or a regular announcement.

The process of recording a new announcement or voice menu works as follows:

Step 1: Where am I?

To record a new voice menu or announcement, you need one of the PBX extensions next to you. The phone's handset is used as the means of recording your voice menu or announcement.

Assume that you are currently located next to extension number 6501.

Step 2: Prepare Your Text

For a small office PBX the text played back isn't crucial, however, for enterprises the spoken text can be crucial. If you want to have a well formulated text, use the services of a copy writer. Write your announcement on a piece of paper, and when recording simply read it from the paper, don't think about what you're saying while recording—it will simply sound bad.

For the purpose of our task, record the following messages:

Message name: AsteriskNOW_Announce

"Congratulations—you have successfully installed and executed the AsteriskNOW PBX system."

Message name: AsteriskNOW_Select

"You may now dial the user extension number you wish to dial."

Step 3: Recording

Now you will perform the actual recording of the audio file. First, click the Record a Menu link, located in the main menu. The following should appear on your screen:

Voice Menus and IVR in AsteriskNOW

Click the Record a new Voice Menu button. The following dialog should appear on your screen:

Voice Menus and IVR in AsteriskNOW

The above information doesn't appear on your screen, so fill out the relevant information in the dialog box. Once you have entered the information, pressing the Record button will ring the extension number indicated—in your case, extension number 6501. A prompt indicating you to start recording at the sound of the beep will be heard (this is a fairly fast prompt, so wait for the beep). Once you have finished your recording, simply press the # button on your keypad, or hang up.

BUG Note:
The version of AsteriskNOW used for this article is Beta-6. This version contains a small bug in regards to refreshing the list of recorded messages. Once you have recorded your message, do no forget to switch to another section, and then back to Record a Menu, to refresh the interface—hitting the refresh button on your browser will refresh everything

Once you have refreshed your screen, the following should appear on your screen:

Voice Menus and IVR in AsteriskNOW

At this point, you can re-record your message, using the Record Again button, Play the recording, or Delete it. Recording/Playing is performed via a connected phone, so make sure you have a phone next to you.

Time Based Rules

Time based rules are a means of letting a certain portion of the PBX behave in some way during specific time frames and another way in others. A good thing about time based rules is that they can be cascaded to perform a very complicated time selection scenario.

In order to create a new time based rule, click the Time Based Rules option; the following screen should appear:

Voice Menus and IVR in AsteriskNOW

When defining a new time based rule, the following information should be taken into consideration (all fields below are mandatory):

Voice Menus and IVR in AsteriskNOW



Field Name


Applicable Values

Rule Name

A descriptive name for your time based rule.

Any string of characters.

Start Time & End Time

The time period in the day the rule applies in.

Time selection by hours and minutes from the selection box.

Start Day & End Day

The days of the week the rule applies in.

Consecutive days period of the week.

Start Date & End Date

The period of the month the rule applies in.

Consecutive dates period of the month.

Start Month & End Month

The months of the year the rule applies in.

Consecutive months period of the year.

Destination if time matches

A destination within the PBX to which to route the call, if the time period matches.

An already configured resource of the PBX.

Destination if time did not match

A destination within the PBX to which to route the call, if the time period doesn't match.

An already configured resource of the PBX.



If you wish to configure cascading time based rules, upon completing each rule, you must click the Activate Changes button, so that the last created rule becomes available in the selection box

For the purpose of configuring your PBX create a time based rule to indicate the 4th of July. Create a new time based rule, called July 4th and fill in the information provided below:

Voice Menus and IVR in AsteriskNOW

Ring Groups

Ring groups are sometimes referred to as "hunt-groups" (especially in Europe). The purpose of a ring group is to provide a facility in which multiple connected handsets can ring at the same time. Ring groups are not limited by the technology of the connected handset, meaning that a ring group can contain a mixture of analog and VoIP handsets at the same time.

To create a new ring group, click the Ring Groups option; the following screen should appear:

Voice Menus and IVR in AsteriskNOW

Now, click the New Ring Group button, in order to open the Add Ring Group dialog box:

Voice Menus and IVR in AsteriskNOW

As you can see in the above screenshot, the dialog box contains two lists and some configurable options. The list on the left indicates the members of the configured ring group, while the list on the right indicates the available extensions that are, currently not part of the current ring group. The options available are as follows:

Field Name


Applicable Values


Descriptive name for your ring group.

Any string of characters.


The methodology with which the extensions ring in the ring group.

Ring In Order-Ring the extensions one after the other.Ring All-Ring all configured extensions together.

Extension for this ring group(optional)

A virtual extension; when dialled it will ring the configured ring group.

A numeric value.

Ring (each/all) for these many seconds(Mandatory)

Ring each extension on the ring group, or the entire ring group (depending on the strategy) for this many seconds.

A numeric value. Recommended values are between 15 and 20 seconds.

If a ring group is rung and no extension picks up the call, the call is flagged as "not-answered", immediately failing into the "If not answered" rule. If a call is not answered, the call falls back to one of the following three options:

  • Goto Voicemail of this user: Will automatically direct the un-answered call to the voicemail indicated by the selection box.
  • Goto an IVR menu: Will automatically direct the un-answered call to a pre-configured voice menu.
  • HangUp: Simply hang up the un-answered call.

Enough Theory, Back to Voice Menus

Last time, your voice menu section included a single voice menu, designated as mainmenu. First of all, assign a PBX extension to your main menu, so that you can listen to it.

Click the Voice Menus menu item and then select the Voicemenu-mainmenu from the selection box on the left side of the screen. The form on the right should now be filled with the various steps of the mainmenu voice menu. The following should appear on your screen:

Voice Menus and IVR in AsteriskNOW

Enter the number 7501 in the text box designated Extension then click the Save button. Activate your changes (as always) and try dialling 7501 from a phone connected to the PBX. If all goes well, you should be listening to the main menu. Pay attention to the announcement you listen to and the contents of the Steps list.

As you may have noticed, each of the steps corresponds to a specific voice announcement you have heard on your phone. AsteriskNOW simply goes through the steps list, one by one, and performs the steps as they are indicated. If we were to translate the current mainmenu voice menu into a flow chart, it would look something like the flow chart below.

Voice Menus and IVR in AsteriskNOW

The flowchart is not a complete one, it is a partial look into the mainmenu pre-configured voice menu.

As you may have noticed, the mainmenu currently configured isn't very useful to us, as it doesn't really wait for information to be entered, and if no information is entered, it simply hangs up. You shall now modify the mainmenu to a voice menu that will serve your PBX better.

The behavior of your main menu as a simple step-based list is as follows:

Step 1: Answer the call.

Step 2: Play the "thank-you-for-calling" recording, allowing playback to be interrupted by input.

Step 3: Play the "if-u-know-ext-dial" recording, allowing playback to be interrupted by input.

Step 4: Play the "otherwise" recording, allowing playback to be interrupted by input.

Step 5: Play the "please-hold-while-try" recording, allowing playback to be interrupted by input.

Step 6: Wait for an extension number to be entered for 5 seconds.

If no extension had been entered during the course of your voice menu, ring the operator, located at extension 6500.

Most of the above is already configured, but you are most probably wondering how to transfer the call to extension 6500, if no extension has been selected and if the 5 seconds has timed out.

To configure the above:

Step 1: Remove the last step from the pre-configured steps list (this step is not required).

Step 2: Add the "WaitExten" step, indicating a 5 seconds delay.

Step 3: Scroll down the "Keypress Events" select box and locate the "t" event" – indicating a timeout has occurred.

Step 4: Modify the event from "Disabled" to "Goto Extension" and select the extension to be 6500.

Step 5: Modify the event of the "i event" to be identical to that of the "t event". The "i event" indicates that an invalid extension number was entered.

At this point, your VoiceMenu mainmenu should look as follows:

Voice Menus and IVR in AsteriskNOW

After modifying the configuration, click the Save button and then activate the changes. Now, pick up your phone and dial the 7501 extension, if all goes well, you should hear the announcements, and then if you haven't pressed anything, you should be transferred to extension 6501.

Playback and Background Steps
Playback and background require a recorded file name to work. As you may have noticed, if you add one of these steps, you will be asked to fill a text box. If you click on the text box, a small window will pop up. This is a scroll window, although it may not look like it (browser issues with some browser versions), simply use the arrow keys to scroll up and down to locate your recording


We have just mastered one of the basic elements of modern PBX systems. A proper combination of voice menus and carefully planned recordings will provide a very enjoyable IVR experience for your PBX users, making sure that they don't get aggravated by your PBX system. Try to avoid the concept of making your company look bigger than it really is, by complicating your voice menus—keep it simple; don't add a menu when it's not required.


You've been reading an excerpt of:


Explore Title