To Code or Not to Code: A Comparative Guide to Building Voice Applications Using VoiceXML and Drag-and-Drop Technology - Plum Voice - ContactCenterWorld.com 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.
- Silence > “I didn’t hear you” Prompt > Counter > Start (3)
- 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.
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
|All Suppliers||Get Listed|
(VIEW OUR PAGE)
HigherGround develops data collection, information storage, and interaction analytics solutions that easily transform data into actionable intelligence, enabling operational optimization, enhanced per...
|PREMIUMFuture Gen International Pte Ltd|
(VIEW OUR PAGE)
Outsourcing provider of English Call Centre services, Audio Transcriptions, Big Data ETL (Extract, Transform, Load) , Big Data Visualization, Big Data Predictive Model Generation
(VIEW OUR PAGE)
Аутсорсинговый контакт-центр ConceptCall| КонцептКолл специализируется на исходящем и входящем телемаркетинге: мы предоставляем услуги по осуществлению холодных звонков и продажи по телефону, проводим...
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 Providers||July 12, 2018 5:00 AM|
|What You Need to Know about Poor Call Quality||June 7, 2018 5:00 AM|
|Fairly Allocate Call Transfers to Multiple Contact Centers||May 17, 2018 5:00 AM|
|Making Natural Language Processing Feasible with Artificial Intelligence||February 8, 2018 5:00 AM|
|Outsourcing or DIY? Find the Right IVR Development Approach||November 30, 2017 5:00 AM|
|IVR That Saves $5M per Month||November 16, 2017 5:00 AM|
|The Limitations of Speech Rec & How to Combat Them||November 2, 2017 5:00 AM|
|Why Not All IVR Software Is Created Equal||October 17, 2017 5:00 AM|
|How to Get More From Your IVR with Artificial Intelligence||September 28, 2017 5:00 AM|