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].
Download ReportTranscript 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].
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