Cookie Preference Centre

Your Privacy
Strictly Necessary Cookies
Performance Cookies
Functional Cookies
Targeting Cookies

Your Privacy

When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences, your device or used to make the site work as you expect it to. The information does not usually identify you directly, but it can give you a more personalized web experience. You can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, you should know that blocking some types of cookies may impact your experience on the site and the services we are able to offer.

Strictly Necessary Cookies

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site may not work then.

Cookies used

Performance Cookies

These cookies allow us to count visits and traffic sources, so we can measure and improve the performance of our site. They help us know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies, we will not know when you have visited our site.

Cookies used

Google Analytics

Functional Cookies

These cookies allow the provision of enhance functionality and personalization, such as videos and live chats. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies, then some or all of these functionalities may not function properly.

Cookies used




Targeting Cookies

These cookies are set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant ads on other sites. They work by uniquely identifying your browser and device. If you do not allow these cookies, you will not experience our targeted advertising across different websites.

Cookies used


This site uses cookies and other tracking technologies to assist with navigation and your ability to provide feedback, analyse your use of our products and services, assist with our promotional and marketing efforts, and provide content from third parties


Upcoming Events


How To Enter the 2020 Members' Choice Awards - For Vendors




To Code or Not to Code: A Comparative Guide to Building Voice Applications Using VoiceXML and Drag-and-Drop Technology - Plum Voice - Blog

To Code or Not to Code: A Comparative Guide to Building Voice Applications Using VoiceXML and Drag-and-Drop Technology

Know Your Options

When you’re driving in the car you can opt for any number of routes to get from point A to point B. The most direct path or the scenic route both have their advantages. Regardless of which one you choose, as long as you arrive at your destination it doesn’t matter which course you drive.

The same is true of application development. Some companies have the resources to do things a certain way and others don’t. This isn’t to suggest that one way is better than the other; they’re just different.

In the spirit of education and clarity, we’re going to walk through two different approaches to building a simple voice application using two of our own platforms, Plum DEV and Plum Fuse.

The DEV platform allows users to build applications using VoiceXML, an open standard programming language similar to HTML. Plum Fuse is a rapid application development platform that has an intuitive, visual drag-and-drop graphical user interface (GUI).

Understanding how these technologies work goes a long way toward finding a solution to meet your specific needs, how to leverage a platform as a service (PaaS), and determining what resources are necessary to build an IVR application.

To keep things simple and concise in the following example we’ll look at how to create a basic auto-attendant application. Once the application answers the call the main menu starts with a simple prompt that gives callers four options. These consist of talking to support, sales, or customer service, or to get more information about the company.

Phase 1: Main Menu

The backbone of the application is the main menu. It’s the first thing callers hear after the IVR picks up a call.


For developers with HTML or XML coding experience, putting together the main menu in VoiceXML is pretty straightforward. First, designate and identify the menu

and how that menu will behave . This tag indicates that users will be unable to “barge in” or interrupt the prompt. (1)

In other words, if you called and pressed or said “1” before the prompt finished, the application would not recognize your selection. You would have to wait until the prompt finished to make your selection. Changing the value to “true” would enable barge in functionality.

Now you may be wondering how the automatic speech recognition (ASR) works here. Well the

tag takes care of that in this example, automatically incorporating ASR into the menu. There are multiple ways to initiate ASR, but this default method most closely represents how Fuse works.

The second step is to create the options. These are denoted with a tag. The “Support” choice looks like this: Support. (2) The DTMF component relates to actual key selections on your device. The prompt instructed callers to press 1 or say “support” for support. This line of code assigns the input “1” to the support menu. The “next” function simply directs the application where to go after the number 1 is selected. In this case its to the support submenu.

Because there are four total selections, the above code can be copied and changed to reflect each choice.


Building the same menu in Fuse is even easier. When you first open Fuse all you have is a blank workspace and a Start module. To set up the prompt navigate to the Modules sidebar on the left. Expand the “Basics” section if it’s not already open. The second option is a grey box titled Simple Prompt. (1) Either click the little + to the right or click the box and drag it onto the workspace.

Enter the text for your main menu prompt in the module’s textbox in the workspace. Then, simply click the circle node on the bottom of the Start module and the triangle node at the top of the Simple Prompt module to connect the two elements. Remember that the links between modules are the same paths a call will follow based on caller input.

To build out the menu options in Fuse go back to the left side bar and drag a SimpleMenu module (the second yellow box in the Basics menu) onto the workspace. (2) Our prompt provides four options so click the + sign in the module until you have four input rows. You’ll link these to their corresponding components later, but just add them for now, and select the desired number and verbal inputs for each option.

Note that Fuse enables ASR by default. If you want to turn it off, simply leave the “Say” fields blank and callers won’t have the option of speaking their selection.

Phase 2: Error Handling

What if someone says something that doesn’t align with the assigned choices in the menu? It’s a good idea to give callers a few chances in case they press a wrong key or the ASR doesn’t understand them.


In DEV there are two different tags you can use for error correction. They are and . The first, , covers the ASR if the caller didn’t say anything or if the caller didn’t press anything. (1) The second, , corrects for erroneous key inputs, or invalid speech inputs. (2) For example, if someone presses or says “6” when it’s not a menu option that’s a “nomatch” error.

Notice at the end of both of these sections of code, before closing the tag there is an additional command. This tells the application to go back to the main menu prompt and start the process over again.

The default setting in DEV for how many times the application re-prompts callers is three. See the discussion about the tag below if you want to change this default.


To set up error handling in Fuse go to the title bar of the menuChoice module where you will see three boxes on the right. Click on the triangle box and select the box next to “Error Handling.” This automatically adds “Silence” and “Invalid Entry” to the bottom of the module. (1)

Drag another SimplePrompt module onto the workspace. Type in the error message for either no match or no input. To create the second prompt, you can either repeat the same process, or right click on the module, select “clone this module,” and update the text as appropriate for that error message.

Use a counter to limit the number of re-prompts in Fuse. Expand the “Variables and Math” section in the left sidebar. The last yellow box is labeled Counter. Drag a pair of those modules onto the workspace. Put one next to each error prompt. In our example here we set the counter on both to three attempts. (2) Once either counter registers three failed attempts the program transfers callers to the error page.

Now connect the modules using the circle and triangle nodes on each element. You end up with two chains.

  1. Silence > “I didn’t hear you” Prompt > Counter > Start (3)
  2. Invalid Entry > “Your entry was invalid” Prompt > Counter > Start (4)

Phase 3: Sub-Menus

At this point we know the four options that callers will have, but we need to create their corresponding menus, as well as an error page.


Looking at the DEV code you can see that there are three different functions that these pages have.

The first block, Support, passes callers through to another menu. (1) Sales and Service both include a prompt to inform the caller about what action is taking place. (2) The application then transfers callers to the phone number entered in the module. The Info block simply includes a prompt before ending the call. (3)

Let’s go back and look at the Support sub-menu. In order for a caller to get through to support they have to first enter their customer support number. Note in the tag that the caller must enter eight digits because the minimum and maximum are both set to eight. (1)

Callers are prompted to enter their customer support number. Nested within the tag are and tags with associated counters. (2) Notice the nested within both of those tags as well.

The tag is the one here that controls the number of attempts. The event=“noinput nomatch” count=“3” modifier says that once the total number of errors reaches three, to prompt the caller and end the call (the tag). (3)

When the application records the entered number it is designated as “getNum” as indicated in the tag. So once eight digits have been entered, the application uses a prompt to repeat the number back to the caller. The tag tells the ASR what it will be saying, in this case numerical digits. (4) It also denotes which specific numbers to say by retrieving the value stored in “getNum”.

After confirming the customer support number, the application transfers the caller to customer support in the same way that transfers worked from the main menu to Sales and Service. (5) So that section can be copied, pasted, and updated with the correct number.


In Fuse you’ll want to create new pages (i.e. workspaces) for each sub-menu. Including an error page, that’s five total. This helps to reduce cluttered workspaces. To create a new page, click the “+ New Page” button above the left sidebar. Name the page when prompted and repeat this process for the other four pages necessary for the application. Notice that these pages appear at the top of the workspace like web browser tabs.

Now head back to the main application page. Find the Jump to Page module in the Basics menu in the left sidebar. Drag six of these modules onto the workspace. On the first Jump to Page module, choose “Support” from the dropdown menu, which will automatically be populated with the pages you created. Connect the node next to “Support” from the main menu to node on the Jump to Page module. (1) Repeat this process for Sales, Customer Service, and Info. (2)

The two remaining Jump to Page modules are for error handling. Select the error page for both of these. Link each of these to the counters in the error correction loops. (3)

That’s it for the main menu work flow.

Remember with the DEV example that the Customer Service and Sales sub-menus functioned the same way. Click over to the Customer Service page. Select a Transfer module from the Basics menu on the left sidebar. Type in the prompt text and the phone number for customer service. (1) Link the two modules and voila! Finished. Repeat the same process for Sales.

The Info and Error menus have similar call-flows as well. Click over to the Info page and drag a simple prompt module onto the workspace. Type in the prompt message. (1) Drag a Hang Up or Exit module onto the workspace. (2) Link the three modules together. Repeat the process for the Error page. Now four of the five sub-menus are finished.

The last sub-menu, the one for customer service, requires callers to input their customer service number. So drag a Digits Input module onto the workspace and connect it to the Start module. (1) Type in the prompt that callers will hear. Enter “8” in the “min” and “max” digits fields to account for number length.

Now, just like we created error handling on the main menu, we’re going to add it here. Follow the same process by clicking the triangle box in the module title bar and selecting “Error Handling.” Drag in your simple prompt, counter, and jump to page modules for both sides of the error process. (2) Enter all the appropriate text, values, and linked pages, and connect everything together.

The last piece of the call flow is the verification of the customer support number and transferring the call. Drag a Simple Prompt module onto the workspace, as well as a Say Variable module from the Variables and Math section. (3)

Link the Digits module to the Simple Prompt module, and then the Simple Prompt to the Say Variable module. Finally, pull in a Transfer module and link the Say Variable module to it. (4)

Enter the appropriate text in the Simple Prompt module, and set the Say Variable module to “digits.” Type the pre-transfer prompt text into the Transfer module as well as the phone correct phone number and the entire application is finished.

Final Thoughts

As you can see, when it comes to designing an IVR both coding and drag-and-drop have their advantages. Both approaches also get the job done.

The big question when choosing between platforms is what type of resources are at your disposal? If you’ve got developer talent at the ready, then the coding with DEV is a great option. Or, if you’ve don’t have developers, but still want professional IVR, then Fuse allows you to achieve that.

The preceding example barely scratches the surface of these platforms’ capabilities. Both platforms are free to try, so give one, or both, a whirl and dive into all the powerful features DEV and Fuse offer. Go ahead, build something great!


Publish Date: March 24, 2016 5:00 AM

2020 Buyers Guide Inbound Call Handling Services


Calls are received by the right person or department. The right corresponding information is shown to the agent which makes that appointments are handled quicker and more secure.


Agara is an autonomous virtual voice agent powered by Real-time Voice AI. It is designed to have intelligent conversations with your customers, vendors, and partners without any assistance from human agents. It can handle a wide variety of calls including inbound customer care calls, outbound lead generation calls, appointment scheduling calls, and overdue payment recovery calls.

Agara is available for several industries including banking, insurance, retail, e-commerce, airlines, and telecom. Powered by advanced Real-time Voice AI that understands speech in real-time, automatically determines the right process to follow and guides the caller along in the process with natural conversation.
PH: +1 (512) 333 4634

Call Center Studio

Call Center Studio
Call Center Studio is the world’s first call center built on Google and is one of the most secure and stable systems with some of the industry’s best reporting. It is one of the most full-featured enterprise grade systems (with the most calling features, one of the best call distribution, outbound dialing features and integrations—including IVR, AI Speech Recognition, blended inbound/outbound calling and includes Google’s new Dialogflow and Speech API. Call Center Studio is the absolute easiest to use (with a 10 minute setup), and is the price performance leader with lower equipment cost and less setup time.
PH: +1 512-872-7565

Connect Assist

Contact Centre Services
We’re a specialist Contact Centre business and market leaders helping socially focused organisations deliver quality support to their clients and service users. We do this by providing 24/7 helplines, software solutions and consultancy services.

Since launching in 2006, we’ve operated at the sharp end of customer service, supporting some of society’s most vulnerable people. We’ve pioneered in our space to become a specialist in helplines, whilst using the most advanced communication and database technologies available.

Our social mission has remained a constant throughout, providing many meaningful career prospects and growth opportunities to people within our local communities and fur...
(read more)
PH: 07973640527

Jointly International Inc.

Front Office Solutions
Front office is your Company’s first line of customer interaction and serves as the mirror of your business. Focus on your core business and let our competent staff handle your various front office needs such as:

* Customer Service via chat, email or phone
* Technical Support via chat, email or phone
* Helpdesk
* Virtual Assistant/Receptionist
* Answering Service
* Lead Generation
* Appointment Setting
* Verification
* Surveys
* Debt Recover, Collections
PH: +61 7 5660 6284

MattsenKumar LLC

Contact Center Outsourcing
By catering valuable, usable and enjoyable customer service, businesses can increase their CSAT Score and Customer Retention Rate. We help organizations to provide quality customer service through varied channels like email, phone and live chat. Ensuring quality after-sales support is our USP and we rely on proven approaches to ensure quality customer service.

View more from Plum Voice

Recent Blog Posts:
Bring Your Own Telecom: Is it Worth Doing?July 26, 2018 5:00 AM
Visa Verified: Plum Voice Secures a Listing on Visa’s Global Registry of Service ProvidersJuly 12, 2018 5:00 AM
What You Need to Know about Poor Call QualityJune 7, 2018 5:00 AM
Fairly Allocate Call Transfers to Multiple Contact CentersMay 17, 2018 5:00 AM
Making Natural Language Processing Feasible with Artificial IntelligenceFebruary 8, 2018 5:00 AM
Outsourcing or DIY? Find the Right IVR Development ApproachNovember 30, 2017 5:00 AM
IVR That Saves $5M per MonthNovember 16, 2017 5:00 AM
The Limitations of Speech Rec & How to Combat ThemNovember 2, 2017 5:00 AM
Why Not All IVR Software Is Created EqualOctober 17, 2017 5:00 AM
How to Get More From Your IVR with Artificial IntelligenceSeptember 28, 2017 5:00 AM
Submit Event

Upcoming Events

15th annual Best Practice Conference - this is the contact center world's most highly rated event - a whopping 100% of delegates say they would recommend it!

100's of best practice tips and ideas from contact center professionals Read More...

Latest Americas Newsletter
both ids empty
session userid =
session UserTempID =
session adminlevel =
session blnTempHelpChatShow =
session cookie set = True
session page-view-total =
session page-view-total =
applicaiton blnAwardsClosed =
session blnCompletedAwardInterestPopup =
session blnCheckNewsletterInterestPopup =
session blnCompletedNewsletterInterestPopup =