cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
14004
Views
13
Helpful
30
Replies

CVP error.badfetch handling

Rohit Saxena
Cisco Employee
Cisco Employee

Hello Experts,

This is regarding CVP 9.0, here Media server is a dedicated separate server(not co-resident).

If any prompt gets missed out in Media server by user mistake, then VXML gateway(iOS browser) returns an error badfetch and caller is getting dropped abruptly after survivability.

Is there any option where this situation can be handled more gracefully through 'CVP studio' and 'VXML code', like caller moves to the next option bypassing that audio prompt and such event is logged so that necessary action can be taken timely?

Regards,

Rohit

30 Replies 30

I got your point thank you. But where this node should be placed within the script?

Anywhere in your application.

you can have multiple hot-event elements catching different error events (e.g. HTTP badfetrch, ASR/TTS no resource etc).

and connect all of them to single CVP subd.

Hi Lara,

The HotEvent element is a global VoiceXML event handler. You can put it anywhere in the application (I used to put it on a separate Studio page named ErrHandling). Nothing points to the HotEvent element. You connect its exit state to an Audio element to tell the caller there's a problem, then connect to CVP_Subd_Return to return to ICM and let it know there's an issue.

Starting in CVP10.5 you can also catch events in the Events tab of almost every element if you want different handling of an event for different elements.

The StartOfCall element also have an Events tab, where you could catch both Java Exceptions (like Say it Smart exceptions) and VXML Events (like error.badfetch.http.404) globally for the entire application.

I need some help on this same issue with hot events. However, I'm using studio 11.5 and the hot events do not seem to be working. I need to sanity check the log that a hot event is monitoring?

I have an error being returned by the new Rest Element that I can't seem to capture and the application is just ending.

Wondering if its a bug or I'm in the wrong log

 

  This is in the application error logs

A built-in element encountered an exception of type com.sun.jersey.api.client.ClientHandlerException.

 

This error is in the call server error logs

           java.lang.ArrayIndexOutOfBoundsException:


I haven't used CVP11.5 yet, but in CVP11 rest errors can't be caught as

Hot Events.

You can go into the Events tab of the RestClient element and catch the

Java Events where you specify java.lang.Exception (case-sensitive) -

that'll catch all java exceptions in that element.

I got that error recently but don't remember why - it could be that no

results were returned from the web service but I had something on the

XMLPath/JSONPath line - it's best NOT to put anything on that line until

you've used a Decision element and checked if the Element Data for the

Rest Element named status_code is 200 (or whatever your success code it).

Hi,

I'm having an issue determine in which error logs should I see the error.badfetch so that I use that exact error on the hotevent element in Call Studio. I've been looking into the C:\Cisco\CVP\logs\VXML but I can't find that particular error.badfetch. Where else should I look at? Someone suggested that it should be in the Activity logs but is not there either. The idea is to gracefully handle this error so that the call can be transferred to an agent. Thanks in advance for your help.

Carlos,
Check the application error logs
C:\Cisco\CVP\VXMLServer\applications\SystemTestApp\logs\ErrorLog\
Gerry

Thanks Gerry. I still don't see it. It may be because the element configuration in Call Studio has a java class associated to it. What I see on the ErrorLog is this:

'A VoiceXML Session timeout occurred at element DLG_AUTOPLAY_MENU: A session has timed out after 30 minutes. This is most likely caused by a start of call class or action element at the top of the callflow not completing before the voice browser's fetch timeout occurred. To resolve it ensure this class executes in a timely manner or run it in the background. Session timeouts may also occur under high load or if there are issues with a load balancer or voice browser.'

So what happens is that the application when it tries to play that particular missing voice segment, the call is abruptly disconnected and then after 5 minutes (I have set up the application time out to 5 minutes in Call Studio) I see the error above in the ErrorLog but nothing related to the error.badfetch.

 

I have attached a screen shot of the element configuration.

 

Hoping I can be pointed to the right direction.

 

Thanks,

 

Carlos A Trivino

 

Carlos,

 

There are two issues here.

 

1) that your custom code has an issue downloading / playing the right audio file

2) that the application bombs out and the app does not handle this properly.

 

To find the first issue - without debugging the code - you could use wireshark on the on port 80 on the media server.

But you are not 100% sure it even gets to this point.

And / or look at the IIS logs of the media server and see if you can find the 404 error.

 

Ideally you are using a test or dev environment for app development as it makes looking at logs easier....

 

I would also look at the logging on the VVB server (or if using IOS gateways - the IOS gateway VXML debug).

To look at VVB logs real time - 

use the below commands - (you might need to change trace levels).

 

file view activelog uccx/log/MIVR/Cisco001MIVR.index

file tail activelog uccx/log/MIVR/Cisco001MIVRxxx.log (where XXX is the active file - found by running above command).

 

But your Java App should catch and handle this (and any) error - and return a response which you can then decide to play an error audio using a standard audio element.

 

Gerry

 

Thanks Gerry, yes, through the IIS logs I have identified the voice segment missing. But the challenge now is how to catch the java exception generated by a missing voice segment. I don't really know what I have to look for. Do you guys have any sample code that performs something like that? This is an abstract of the code I'm using (removed some stuff from it):

 

public class DlgAutoPlayMenu extends MAudio implements VoiceElementInterface {

private static final String CONSTANT_CTMA_PROGRAM = "CTMA";

 

public VoiceElementConfig getConfig(String pElementName, ElementAPI pElementAPI, VoiceElementConfig pBaseConfiguration) throws AudiumException {

 

try {

VoiceElementConfig.AudioGroup lAudioGroup = pBaseConfiguration.new AudioGroup("initial_audio_group", true);

Double lLoyaltyBalance = <Some SessionVar>

 

VoiceElementConfig.SayItSmart lBalanceAmnt = pBaseConfiguration.new

SayItSmart("com.audium.sayitsmart.plugins.AudiumSayItSmartCurrency", "standard", "dollars_cents", lLoyaltyBalance);

lBalanceAmnt.setUseRecordedAudio(true);

lBalanceAmnt.setUseDefaultAudioPath(true);

lBalanceAmnt.setFileset("enhanced");

lBalanceAmnt.setAudioPath("SayItSmart/");

lBalanceAmnt.setAudioType("wav");

 

VoiceElementConfig.StaticAudio l14023 = pBaseConfiguration.new StaticAudio("14023.wav");

l14023.setUseDefaultAudioPath(true);

VoiceElementConfig.StaticAudio l14024 = pBaseConfiguration.new StaticAudio("14024.wav");

l14024.setUseDefaultAudioPath(true);

VoiceElementConfig.StaticAudio l14025 = pBaseConfiguration.new StaticAudio("14025.wav");

l14025.setUseDefaultAudioPath(true);

lAudioGroup.addAudioItem(l14023);

lAudioGroup.addAudioItem(lBalanceAmnt);

lAudioGroup.addAudioItem(l14024);

lAudioGroup.addAudioItem(l14025);

pBaseConfiguration.setAudioGroup(lAudioGroup);

}

catch (ElementException eEx) {

lLogger.fatal("["+pElementAPI.getSessionId()+"] Could not set AudioGroup configuration. Exception: ["+Util.transformStackTrace(eEx)+"]");

lLogger.trace("["+pElementAPI.getSessionId()+"] Exiting");

throw new AudiumException ("["+pElementAPI.getSessionId()+ "] Audio Exception occurred. Could not set AudioGroup configuration. " + CLASS_NAME);

}

catch (NullPointerException eEx) {

lLogger.fatal("["+pElementAPI.getSessionId()+"] Could not set AudioGroup configuration. Exception: ["+Util.transformStackTrace(eEx)+"]");

lLogger.trace("["+pElementAPI.getSessionId()+"] Exiting");

throw new AudiumException ("["+pElementAPI.getSessionId()+ "] NullPointerExeption. Could not set AudioGroup configuration. " + CLASS_NAME);

 

}

catch (Exception eX) {

lLogger.fatal("["+pElementAPI.getSessionId()+"] Error generated at "+ELEMENT_NAME+". Exception:["+Util.transformStackTrace(eX)+"]");

lLogger.trace("["+pElementAPI.getSessionId()+"] Exiting");

throw new AudiumException ("["+pElementAPI.getSessionId()+ "] Error generated at "+ CLASS_NAME);

}

lLogger.trace("["+pElementAPI.getSessionId()+"] Exiting");

return pBaseConfiguration;

}

}

 

Any additional help is appreciated.

 

Thanks.

 

Carlos A Trivino

Hi Gerry,

 

I got the link but when I click on any of the zip files on that URL I get back error 404: The webpage cannot be found. Would them be removed?

 

Thanks.

 

Carlos.

Sorry - not sure why that old mirror of CVP Devnet is there.... (cisco?)

 

Here is the correct link

https://developer.cisco.com/site/customer-voice-portal/downloads/custom-elements/java-code-samples/

 

or https://developer.cisco.com/site/customer-voice-portal/ and click Downloads.

 

Gerry

 

Hi Gerry,



I'm getting this error when trying to download any of the code samples:



[cid:image001.png@01D56C76.57959820]



Is this something perhaps you can help me with?



Thanks.







[cid:image003.jpg@01CC9332.54901B80]

Carlos A. Trivino
Consultant Professional Services - Customer Experience Solutions
Bell Business Markets
5115 Creekbank. 2nd Fl. West Tower.
Mississauga, Ontario L4W 5R1
Office: 905-614-8179
Use of this message is governed by our email policy at www.bell.ca/EmailConfidentialityWarning







Carlos,

 

I was able to download successfully without issue using Firefox & Chrome.

 

Gerry