210 likes | 389 Views
Combining VoiceXML with CCXML: A Comparative Study. Daniel Amyot and Renato Simoes School of Information Technology and Engineering University of Ottawa , Canada damyot@site.uottawa.ca, renatops@yahoo.com. Motivation. Interactive Voice Response (IVR) applications
E N D
Combining VoiceXML with CCXML:A Comparative Study Daniel Amyot and Renato Simoes School of Information Technology and Engineering University of Ottawa , Canada damyot@site.uottawa.ca, renatops@yahoo.com
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
VoiceXMLExample <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> <audiosrc="thephoneis.wav"/> <valueexpr="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> 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, third-party 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 Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007
CCXMLExample <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 ComplementaryVoiceXML Script <!– 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:3334444@10.11.12.200:5060 SIP/2.0 Call-ID: 4AF4DBF6-A72611D5-9791C1FA-3D9B40D@10.11.12.200 From: <sip:2341234@10.11.12.13>;tag=1975362409.1.kaaaaagpidddjkejhbchhkoc To: <sip:3334444@10.11.12.200>;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 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 AmyotAssistant ProfessorSITE, University of Ottawa1-613-562-6800 ext. 6947damyot@site.uottawa.ca Combining VoiceXML with CCXML - CCNC'07, Las Vegas, Jan. 12, 2007