IVR Design element and transition

I have attached a simple version of what I want to do.

What I get when I run it are multiple pauses waiting for input at each choice stage. What I want is the following:

1. Make an announcement stating the nature of this call. (Announce)
2. Give the user the ability to opt out (YesNo)
3. Record the response to the question: If an election were held today, which party would you vote for? (FirstChoice).
4. Depending on the FirstChoice answer, record the response to the question about what the second choice would be. (ConsSecondChoice, LibSecondChoice, … etc)
5. Exit gracefully after thanking the person.

There is one error in the design. The YesNo element is not necessary. What this design shows is that after the Announcement (Announce elemet), the system is expecting an answer of either 1 or 2; if the caller presses 1 or 2, the system goes to the YesNo element, and is expecting an answer of either 1 or 2.

All you need to do is get rid of the YesNo element. The new IVR design is shown below:

Posted in IVR General, IVR Usage |

Debug IVR Applications

The application plays wav file “Sorry the system cannot continue due to error, please try again”. and the call hangs up. I have attached the log.

The call flow is as follows:

Incoming Call
-> Main Menu (present speech command)
-> English
-> Spanish
… -> unknown

RESPONSE: TTP/1.1 200 OK
RECOGNIZE: Set-Grammar: action=set; type=grammar; name=; cfg=english | spanish

RESPONSE: TTP/1.1 200 nomatch
FLUSH
RESPONSE: TTP/1.1 200 OK
Context: http://localhost:8155/OutIVRstudio/MainMenu.vxml
URL: http://localhost:8155/ocall/callconfirmed
Exec form item: __internalVar__1
Context: http://localhost:8155/OutIVRstudio/unknown.vxml
URL: http://localhost:8155/lvxresolver.jsp?url=%2FOutIVRstudio%2F..%2Flogs%2Fline0.log&nofileok=1
Context: http://localhost:8155/OutIVRstudio/unknown.vxml
URL: http://localhost:8155/lvxresolver.jsp?url=%2Faudio%2FMale%2Fsys_err_try_later.wav
PLAY LOCAL: C:/Program Files/Voicent/Gateway/webapps/ROOT/audio/Male/sys_err_try_later.wav
RESPONSE: TTP/1.1 200 OK
vx.parser.VxException: __VG__LAST_RESULT__ not defined
at vx.interp.VxEvaluator.evalVarValue(VxEvaluator.java:386)
at vx.interp.VxEvaluator.evalValue(VxEvaluator.java:176)
at vx.interp.VxEvaluator.evaluateValue(VxEvaluator.java:27)
at vx.interp.VxInterpreter.doLogExpr(VxInterpreter.java:1794)
at vx.interp.VxInterpreter.doLog(VxInterpreter.java:1775)
at vx.interp.VxInterpreter.doExecutableContent(VxInterpreter.java:1350)
at vx.interp.VxInterpreter.doAllExecutableContent(VxInterpreter.java:1302)
at vx.interp.VxInterpreter.doBlock(VxInterpreter.java:1228)
at vx.interp.VxInterpreter.executeFormItem(VxInterpreter.java:342)
at vx.interp.VxInterpreter.interpret(VxInterpreter.java:121)
at vx.interp.VxInterpreter.interpret(VxInterpreter.java:82)
at vx.interp.VxInterpreter.doSubDialog(VxInterpreter.java:1169)
at vx.interp.VxInterpreter.executeFormItem(VxInterpreter.java:332)
at vx.interp.VxInterpreter.interpret(VxInterpreter.java:121)
at vx.interp.VxInterpreter.interpret(VxInterpreter.java:82)
at vx.interp.VxInterpreter.interpret(VxInterpreter.java:60)
at vx.server.VxContextImpl.interpretStartDocument(VxContextImpl.java:427)
at vx.server.VxContextImpl.start(VxContextImpl.java:279)
at vx.server.VxInterpClientThread.run(VxInterpServer.java:190)
interpret() exit with 1

The log file usually can give you some indication about what’s going on.

1. First, the exception thrown is:
vx.parser.VxException: __VG__LAST_RESULT__ not defined

That means the system variable __VG__LAST_RESULT__ is not defined when accessed.

2. If you read backwards from the exception, you can see the following line:
URL: http://localhost:8155/lvxresolver.jsp?url=%2FOutIVRstudio%2F..%2Flogs%2Fline0.log&nofileok=1
Context: http://localhost:8155/OutIVRstudio/unknown.vxml

That means the exception happens in the unknown.vxml file. So the element in IVR Studio is unknown. So you need to check any expression in that element that is using __VG__LAST_RESULT__.

3. If you go further back, you will see the following:
RECOGNIZE: Set-Grammar: action=set; type=grammar; name=; cfg=english | spanish

RESPONSE: TTP/1.1 200 nomatch

That means when the system is expecting the caller to say “english” or “spanish”, the system throws a VoiceXML exception “nomatch”. Since there is no recognition, __VG__LAST_RESULT__ is not set. Hence, the error.

Posted in IVR Developer |

IVR application integrate with relational database

I would like to write (insert) to a SQL table (MS Access) using JDBC from a IVR Studio program. I believe I can call a Java Method. Can you confirm that would be the proper way and do you have any examples you can share?

Yes, it is the proper way.

We do not have samples using JDBC. For samples using Java action, please refer to Lession 8 of IVR Tutorial. Sample Voicemail to Email also uses Java action.

Posted in IVR Developer |