Combining VoiceXML
with CCXML:
A Comparative Study
Daniel Amyot and Renato Simoes
School of Information Technology and Engineering
University of Ottawa , Canada
[email protected], [email protected]
Motivation
• Interactive Voice Response (IVR) applications
– User interacts with an automated system
• Recorded speech or computer generated
• Telephone keys or speech recognition
– Examples: Information retrieval, virtual secretaries, bookings
and payments, …
• Popular IVR applications use:
– VoiceXML for vocal dialogs
– Session Initiation Protocol (SIP) for call control
• New Call Control eXtensible Markup Language (CCXML)
emerging…
• Can CCXML help accelerate the development of complex VoIP
solutions that have an IVR component?
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Overview
• VoiceXML (a.k.a. VXML)
• CCXML
• Comparative study based
– Simple Personal Assistant system
• Observations
• VoiceXML Portability Issues
• Conclusions
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
VoiceXML Highlights
• Voice Extensible Markup Language
– Version 2.0, W3C Recommendation (16 March 2004)
• Bring the advantages of Web-based development to IVR
–
–
–
–
Familiar client/server paradigm
Web Server keeps the logic (DB, generates VXML)
Multiple dialogs
Enables (voice) access to Web services
• Avoid low-level programming and resource management
• Designed for
– Creating audio dialogs
– Synthesized speech
– Digitized audio
–
–
–
–
Speech recognition
DTMF key input
Recording
Basic telephony control
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
<vxml>
<form id="get_tophone">
<field name="tophone" type="digits?length=7">
<prompt> <audio src="enterphone.wav"/> </prompt>
<noinput> <reprompt/> </noinput>
<noinput count="3"> <exit/> </noinput>
</field>
<field name="confirm" type="boolean">
<prompt>
<audio src="thephoneis.wav"/>
<value expr="tophone"/>
<audio src="correct.wav"/>
</prompt>
<nomatch> <reprompt/> </nomatch>
<noinput> <reprompt/> </noinput>
<filled>
<if cond="confirm">
<exit namelist="tophone"/>
<else/>
<clear namelist="tophone confirm"/>
</if>
</filled>
</field>
</form>
</vxml>
VoiceXML
Example
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Typical Configuration with VXML (& SIP)
Voice
Interactions
Signalling and
Call Control
Business Logic
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
CCXML Highlights
• Call Control eXtensible Markup Language
– W3C Working Draft, 22 November 2006 (8th version)
• Declarative description of advanced telephony
functions
– Conference control, Find Me Follow Me, click-to-dial, thirdparty call control manager…
• Handling of asynchronous events from many sources
• CCXML is protocol independent can interwork with
voice dialogs
– VoiceXML, Parlay, SLEE, JAIN SIP…
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
CCXML Benefits
• Handles sophisticated multiple call control
– Ability to give each call leg its own dedicated IVR
– Note possible with VoiceXML only
• Often SIP is added to solve this issue
• Suitable for direct interaction with end users
– Necessary for IVR and conference services
– Could not be done easily using IETF’s Call
Processing Language (CPL)
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Typical Configuration with CCXML&VXML
Voice
Interactions
Signalling and
Call Control
Business Logic
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Example Scenario: Personal Assistant
Inbound call
Please enter
phone number you
want to reach.
Dial Callee
Callee
Answers
Put caller
on hold
Do you want
to accept
the call?
No
Phone is
X, correct?
Yes
Play hold
music
Yes
Join Caller
and Callee
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Accepted ?
No
Put Caller to
Voice Mail
Inbound call
CCXML
Example
Please enter
phone number you
want to reach.
Dial Callee
Callee
Answers
Put caller
on hold
Do you want
to accept
the call?
No
Phone is
X, correct?
Yes
Play hold
music
Yes
Join Caller
and Callee
Accepted ?
No
Put Caller to
Voice Mail
<transition event="dialog.exit" name="evt“ state="welcoming_caller">
<assign expr="evt.calleephone" name="tophone" />
<!-- Place the caller on hold -->
<dialogstart dialogid="dlg_onhold" connectionid="in_connectionid"
src="'holdmusic.jsp'" />
<!-- Contact the callee. -->
<assign expr="'contacting_target'" name="currentstate" />
<createcall dest="'tel: ' + evt.calleephone" connectionid="out_connectionid" />
</transition>
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Example of
Complementary
VoiceXML Script
Dial Callee
Callee
Answers
Put caller
on hold
Do you want
to accept
the call?
Play hold
music
Yes
Join Caller
and Callee
Accepted ?
No
Put Caller to
Voice Mail
<!– Generated on the fly by Web Server -->
<vxml version="1.0">
<var name="callid" expr="'<%= callid %>'"/>
<form id="callee_confirm">
<field name="confirm" type="boolean">
<prompt> <audio src="acceptcall.wav"/>
</prompt>
<nomatch count="1"> <reprompt/> </nomatch>
<nomatch> <exit/> </nomatch>
<noinput> <reprompt/> </noinput>
<noinput count="3"> <exit/> </noinput>
<filled>
<if cond="confirm">
<assign name="accepted" value="true" />
<exit namelist="accepted" />
<else/>
<assign name="accepted" value="false" />
<exit namelist="accepted" />
</if>
</filled>
</field>
</form>
</vxml>
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
CCXML vs SIP for Call Control
• CCXML
<join id1="in_connectionid" id2="out_connectionid" />
• SIP
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Typical SIP Message (INVITE)
09/07/2005 18:14:05.168: Outgoing Message
Transport: UDP (reliable=false): ip=10.11.12.200, port=5060, plugin=null, forceUDP=false, TTL=1
INVITE sip:[email protected]:5060 SIP/2.0
Call-ID: [email protected]
From: <sip:[email protected]>;tag=1975362409.1.kaaaaagpidddjkejhbchhkoc
To: <sip:[email protected]>;tag=7EB680D0-1A20
CSeq: 103 INVITE
Contact: sip:sipserver:5060
Content-Type: application/sdp
Content-Length: 362
Max-Forwards: 70
Via: SIP/2.0/UDP 10.0.0.246:5070;branch=z9hG4bK0A0000F6BADF00D00000104FD963E68191
v=0
o=SIP-GW-UserAgent 9597 1982 IN IP4 10.11.12.200
s=SIP Call
c=IN IP4 10.11.12.200
t=0 0
m=audio 17968 RTP/AVP 18 0 8 4 2 3 19
c=IN IP4 10.11.12.200
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:4 G723/8000
a=fmtp:4 annexa=no
a=rtpmap:2 G726-32/8000
a=rtpmap:3 GSM/8000
a=rtpmap:19 CN/8000
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Typical Scenario with VoiceXML & CCXML
CCXML snippet
seen earlier…
VoiceXML script
seen earlier…
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Same Scenario with VoiceXML & SIP
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Observations
Criteria
SIP +
VXML
CCXML
+ VXML
Comments
Code
Complexity
Higher
Lower
CCXML code more abstract and smaller
by an order of magnitude
Flexibility
Higher
Lower
SIP can do all that CCXML can, but not
the opposite
Maintainability
Higher
Lower
CCXML simpler to understand but its
XML-based nature enables all sorts of
errors hard to catch at design time
Extensibility
N/A
Higher
(CC)XML language easy to extend, but
can lead to interoperability and
portability issues
Coupling
Lower
Higher
CCXML server expected to be strongly
coupled with the VXML browser. May
have to come from same vendor or be on
the same media server platform
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
VoiceXML Portability Issues
•
•
•
•
•
•
Used VoiceXML media servers (Nuance’s NVP 3.0 and Brooktrout’s
Snowshore A1) and studied Convedia and BeVocal
Shadow Variables
– Platform-specific, used to modify or access additional information
from a VXML tag.
– Nuance’s name$.termchar, name$.duration, name$.size
Proprietary Grammar
– Nuance includes its own Grammar Specification Language, used
inside the VXML code
Proprietary Tags
– <bevocal:foreach>, <bevocal:listen>
– Nuance’s tags for voice recognition capabilities
Partial Support for VXML 2.0
Others…
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Conclusions
• CCXML provides appropriate abstractions and offers capabilities
that are easier and faster to use than a plain SIP-based
approach for IVR applications
• The SIP-level flexibility may still be required in some situations
– Room for a hybrid solution?
• CCXML’s future will depend on the availability of good
development and execution environments, including API’s
• Emerging CCXML platforms include:
– Hewlett-Packard: HP Open Call Media Platform
– Voxeo Corporation: Prophecy IVR Voice Platform
– Loquendo: VoxNauta Platform
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
For Further Information
• Daniel Amyot
Assistant Professor
SITE, University of Ottawa
1-613-562-6800 ext. 6947
[email protected]
Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
Descargar

Combining VoiceXML with CCXML