Template-based framework for building
Multi-language VoiceXML application
Agenda
System Overview
Development platform
Template-based Application Framework
Design Process
Deployment platforms
Multi-Channel System Architecture
Multi-Channel System Architecture
IDE tools
IBM Voice Server and Apache Forum
IBM Voice Server
PHP
Apache Web Server
PHP
mySQL
PHP
PHP
Voice Web Architecture
Development Platform
Open source Apache Forum Products on
Windows NT 4.0
Web Server - Apache HTTP Server
Database - mySQL
Server Side Scripting - PHP
VoiceXML server - IBM ViaVoice SDK
Design Objectives
Distinct layers architecture (presentation layer, business
logic layer and data access layer)
Scalable architecture based on J2EE (enable vendor
independence, RAD workflow process)
Abstract data access layer (allow easy plug-n-play for new
data access channels)
Easy of use and user-friendly (separate designer and
programmer skill sets)
Abstract execution environment (allow multiple-content to
multiple devices)
Template-based Application
Framework
Framework contains 6 modules
Resources - resource bundles, config files
Prompts - pre- recorded wave files, text for prompts
Grammars - grammars files
Templates - dialog designs
Includes - sources code, common
Common - XML DTD, DB abstract, generic codes
Application Framework Design
Classic Software Design Paradigm
Model - manages the behavior View, responds to request,
and instruction to change state
View - manages the outputs
Controller - Interpret input from user, command the model
and change the view as appropriate
Model
Controller
View
Application Framework mapping
Config
dialogs
(Business
Logic)
Prompts
php
template
files
vxml
Grammar
Includes
Controller
Model
View
Implementation Process
Dialog Design
–
Build VXML component
–
speech objects
–
define grammar
Map dialog with contents from DB tables
–
map dynamic and static contents
Unit testing via browser using PHP
–
build API for data retrieval
Apply Business Logic
–
Pre-recorded or TTS
call up each component through URL
System Integration in VXML platforms
Dialog Design
Basic Call Flow Control
A Voice application is a collection of dialogs.
The interpreter navigates from dialog to dialog in
document source order.
A dialog is referenced via the value of its id attribute.
The id of each dialog within a document should be unique.
The URL consists of a hash symbol (#) followed by the
value of the <form> element’s id attribute.
Outside the document, the URL consists of the absolute or
relative HTTP path to the document
Basic Call Flow Control example
<!-- main.vxml -->
<vxml>
<form id=“main”>
<block>
<goto next=“action1.vxml#say_hello”/>
</block>
</form>
<form id=“goodbye”>
<block>
<audio>Good Bye</audio>
<goto next=“_home”/>
</block>
</form>
</vxml>
<!-- action1.vxml -->
<vxml>
<form id=“say_hello”>
<block>
<audio> Welcome to Pace U</audio>
<goto next=“#do_next”/>
</block>
</form>
<form id=“do_next”>
<block>
<goto next=“main.vxml#goodbye”/>
</block>
</form>
</vxml>
Dialog Design
Compare Audio and TTS
Pre-recorder Audio
Text-To-Speech
Resource
Large
Small
Vocabulary
Small
Unlimited
Intelligibility
High
Highly Intelligible
Voice Quality
Natural
Pleasant
Mechanical
Voice Customizability
Must re-record
Unlimited
Cost
Expensive
Negligible
Flexibility
None
Unlimited vocabulary
Build VXML components
A simple dialog template
<form id="login">
<field name="userid">
{USERID_GRAMMAR}
{USERID_PROMPT}
<noinput count="1">
<reprompt/>
</noinput>
</field>
<field name="password">
{USERPWD_GRAMMAR}
{USERPWD_PROMPT}
<filled>
<assign name="application.userid" expr="userid"/>
<submit next=”{GOTO_PAGE}" namelist=”{GOTO_PARAMETERS}"/>
</filled>
</field>
</form>
Build VXML components
Define Prompts and Grammars
Example of a prompt file for US_EN
<?php
$USERID_PROMPT='<prompt><audio>Please say your six digit user
ID.</audio></prompt>';
$USERPWD_PROMPT='<prompt><audio>Say your four digit
password.</audio></prompt>';
$MENU_USERID_INVALID_PROMPT='<prompt><audio>That user ID does not
exist. Login again.</audio></prompt>';
$MENU_USERPWD_INVALID_PROMPT='<prompt><audio>That password is
incorrect. Login again.</audio></prompt>';
?>
Build VXML components
Define Grammars
<?php
$USERID_GRAMMAR='src=builtin:grammar/digits?length={USERID_LENGTH}
"></grammar>’;
$USERPWD_GRAMMAR=src=builtin:grammar/digits?length={USERPWD_LENGTH
}"></grammar>’;
?>
Integrate into Application Template
Framework
<?php
include "includes/class.FastTemplate.php";
include "includes/common.php";
include "includes/functions.php";
include "includes/abstractdatabase.php";
Common
Include files
Configurations
# to have language specific prompts, and grammars
include (RESOURCES_DIR . "/login_" . LANGUAGE . ".php");
$db = new db();
$db->open(DATABASE, HOST, USER, PASSWORD);
# create a new query object
$q = new query($db);
Database
Abstract
Apply Business Logic
# any thing that you want to do at the beginning of the page common all pages.
pageStart();
# don't really need to declare as global since there are
#
no functions using $tpl
template
global $tpl;
# initialize FastTemplace class
mappings
$tpl = new FastTemplate(TEMPLATE_DIR);
$tpl->define(array("main" => "main.tpl",
"login" => "login.tpl"));
$tpl->assign(array("USERID_LENGTH" => LOGIN_ID_LENGTH,
"USERPWD_LENGTH" => LOGIN_PASSWORD_LENGTH,
"USERID_PROMPT" => $USERID_PROMPT,
"USERPWD_PROMPT" => $USERPWD_PROMPT,
"LOGIN_GRAMMAR" => createLoginGrammar(LOGIN_ID_LENGTH),
"PASSWORD_GRAMMAR" =>
createPasswordGrammar(LOGIN_PASSWORD_LENGTH)));
Variables
subsitution
Apply Business Logic cont.
# doing a search and replace here
# variable CONTENT will get the value of the list template after the search and
replace
$tpl->parse("CONTENT", "login");
# variable MAIN will get the value of the main template
# NOTE how the CONTENT variable assigned in the previous instruction gets
replaced in the template.
$tpl->parse("MAIN", "main");
#print out the last variable: MAIN
$tpl->FastPrint();
# any thing that you want to do at the end of the page common to
# all pages
pageEnd();
Unit Testing via browser
Login.php
VoiceXML Application Tools
BeVocal Café, BeVocal, Inc.
–
WebSphere Voice Server SDK, IBM Corp.
–
http://studio.tellme.com
VoiceGenie Dev. Workshop
–
http://extranet.nuance.com/developer
Tellme Studio, Tellme Networks, Inc
–
http://mix.motorola.com/audiences/developers/madk_intro_dev.asp
V-Builder, Nuances Communication
–
http://www.ibm.com/software/speech/enterprise/ep_11.html
Mobile ADK, Motorola, Inc.
–
http://café.bevocal.com
http://developer.voicegenie.com
voxeo community, voxeo Corporation
–
http://community.voxeo.com
Application Tools References
Apache Software Foundation
–
VoiceXML Forum
–
http://www.alphaworks.ibm.com/tech/voicexml
PHP
–
http://www.voicexml.org
IBM VoiceXML Resources
–
http://www.apache.org
http://www.php.net
mySQL
–
http://www.mysql.com
© Copyright 2026 Paperzz