« Back to General Discussion - All Versions

Re: New Message from GEOFFREY THOMPSON in Customer Voice Portal (CVP) - Gen

Combination View Flat View Tree View
Threads [ Previous | Next ]
I'm using CVP Studi 8.5 to build a vxml application. I've a step in which I executes a backend services using a java class and Decision element. The problem is that the back end service take a lot of time to be executed but i'm unable to play a message using this Decision element. My Question is :  How can I play a message to the customer informing him to wait untill his process executed using Decsion Element or any other element? Thanks.

The VXML standard of “fetchaudio” solves this problem.

You would configure the appropriate fetchaudio VXML properties in the application which allows the IVR to play audio while the back end process is working. It’s standard to configure the fetchaudiodelay to something like 2s (so it won’t start for small delays). The fetchaudio will be terminated automatically when the back end process finishes and returns to VXML.

You can configure a fetchaudiominimum if you want to ensure your customer hears a complete part of the beginning of message.

Look up the standard – http://www.w3.org/TR/voicexml20/

fetchaudo: The fetchaudio attribute specifies the URI of the .wav file to play to the caller in the event of an extended document fetch. Essentially, while the fetch is being made, it allows the developer to play some filler music to the caller rather than presenting only silence.

Regards,
Geoff

The VXML standard of “fetchaudio” solves this problem.

You would configure the appropriate fetchaudio VXML properties in the application which allows the IVR to play audio while the back end process is working. It’s standard to configure the fetchaudiodelay to something like 2s (so it won’t start for small delays). The fetchaudio will be terminated automatically when the back end process finishes and returns to VXML.

You can configure a fetchaudiominimum if you want to ensure your customer hears a complete part of the beginning of message.

Look up the standard – http://www.w3.org/TR/voicexml20/

fetchaudo: The fetchaudio attribute specifies the URI of the .wav file to play to the caller in the event of an extended document fetch. Essentially, while the fetch is being made, it allows the developer to play some filler music to the caller rather than presenting only silence.

Regards,
Geoff

Ahmed, I agree with Geoff. You can set fetchaudio to a URI of filler
music, and fetchaudiodelay to the number of milliseconds to wait before
starting the music in the root document of your studio app (Project
/properties).

And don't forget to set the fetchtimeout to a large value right before
you execute your slow DB or WS.

You will have to set the fetchtimeout in the voice element right before
the slow steps in your application. Because the next voice element that
executes causes the gateway to revert back to the default fetchtimeout
set either in the root document of your application (Project
/Properties) or that specified on the vxml gateway CLI 'http client
response timeout'

Thanks Geoff & Janine for your fast response.
I tried to search for fetchaudio  property in project properties but I can't find this element.
I'm using CVP studio v 8.5  I also opened the project setting from the deployed vxml application but I can't find this property.
Can you please tell me where I can find this info.
 

The user has the option to set VXML properties. You don’t select it – you enter it along with the value. It’s the same thing when you want to change termchar, another VXML property. CVP VXML will insert your VXML properties when it constructs the VXML page.

Regards,
Geoff

 
GEOFFREY THOMPSON:
The user has the option to set VXML properties. You don’t select it – you enter it along with the value. It’s the same thing when you want to change termchar, another VXML property. CVP VXML will insert your VXML properties when it constructs the VXML page. Regards, Geoff
Dear Geoffrey, I attached here an screenshot of CVP studio element properties and as you can see there is no other VXML configuration on the element.    
Attachments:

Hi Ahmed,
You can set the fetchaudio property in the root document to make it global for the application (that way the gateway will play it to the caller whenever there's a longish delay).
To do this go to the Studio Navigator, right-click on the app name and select Properties. Then select Call Studio / Root Doc.  The properties are not in a pull-down menu, you must enter the name and the value in the area called 'VXML Properties'
Name: fetchaudio  Value: http://media/en-us/sys/holdmusic.wav (enter the URI and path to your audio. If your audio is on the gateway, then enter flash:holdmusic.wav instead).
You can also (or instead) set any VoiceXML property at the bottom of the Settings tab of any Voice element (Audio, Digits, Number, Currency, Form, etc).
But, when you set it within an element, it's a temporary setting which will only be used by the gateway until the next Voice element is sent to the gateway, then the gateway reverts back to the default (root doc or gateway CLI) setting.
Note that you'll have to set the VoiceXML Property: fetchtimeout  to a large enough value so the gateway doesn't time out waiting for your slow DB or Web Service call - otherwise the gateway will throw 'error.badfetch' when it times out.
You MUST set fetchtimeout in the Voice element IMMEDIATELY before your slow steps (you want the default fetchtimeout to be short so you'll know if there's ever a delay that you don't expect). 
I'd recommend setting fetchtimeout to 5s in the root document and then set it to 60s (or 90s) right before your slow step. If you don't use the 's' as the time unit, the gateway assume milliseconds - so remember to set the timeout to things like '5s' or '60s' NOT '5' or '60' .  Note that the gateway will replay the fetchaudio music if it's not long enough to fill the time period.
 
Here are a few other properties:
fetchaudio  (set to a URI)
fetchtimeout (set to 5s or 60s or 90s as needed. Set short in the root doc, set long in a voice element EACH TIME you are about to execute something lengthy)
fetchaudiodelay (set to 2s in the root doc so gateway doesn't begin playing the fetchaudio unless there's been a 2s delay)
 
 
 
 
 
 
 

thanks so much it works successfully.

>>> thanks so much it works successfully.

Amazing, isn’t it. ;-). There are some clever things built into the VXML standard. I recommend a “quick” read of the specifications on the w3 portal.

Regards,
Geoff

Yes it's amazing.
Thanks so much for your help.

Dears, I've another question regarding this topic. For the Fetch URI property, I'd like to play a wave file based on user language selection. I've a session variable called 'lang' I tried to use the following URI http://media/{Data.Session.lang}/pleasewait.wav  but it failed !  How can I solve this issue ? Thanks.

To use a variable in the name of a VoiceXML property, you'll either have to set the property in the voice element right before the slow stage of the program, or set it in the Root Document using custom java configured as a StartOfCall java component. On 1/12/2013 7:50 AM, Cisco Developer Community Forums wrote: AHMED Ali has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Dears, I've another question regarding this topic. For the Fetch URI property, I'd like to play a wave file based on user language selection. I've a session variable called 'lang' I tried to use the following URI http://media/{Data.Session.lang}/pleasewait.wav but it failed ! How can I solve this issue ? Thanks. -- To respond to this post, please click the following link: http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/10220873 or simply reply to this email. -- Janine Graves