Showing results for 
Search instead for 
Did you mean: 

Dynamic Menus w/ Dynamic Exit States

Does anyone have a JAR that they could send me that allows for Dynamic Menus W/ Dynamic Exit states? I've tried to do it in Studio w/o a JAR and it is messy and I'm not even sure that it will work. If anyone has a JAR that they could send me, I should be able to modify it for my env.

Here is the scenario that I am trying to fulfill:

To hear your refund status again, press 1 - Static menu option

<more refunds>To hear your next refund press <X>. (2 or more PaymentIDs from TaxpayerRefundInformation StoredProceedure)

<If Fees> To hear a listing of the fees paid, press <X>.  FeesPaidFromACH (1=yes, 0=no)

<State Exits> To check the status of the of your State refund, press <X> (StateRefund from ivr_Taxpayerexists StoredProceedurte).

To return to the main menu, press 9. - Static menu option

To repeat this menu, press *. - Static menu option

Hope this isn't asking too much.

P.s. its CVP 10

Geevarghese Cheria
Cisco Employee

Hi Ryan,

I would request you to refer Dynamic Element Configurations from Programming Guide for Cisco Unified CVP VXML Server and Cisco Unified Call Studio, Release 10.5(1).

Refer - Unified CVP API Introduction

if you want to use the jar file for all your studio and vxml server

apps, then place the jar file in these 3 locations.

Studio (then restart studio)


VXML Server (then restart VXML Server service)


Studio Debugger:


Reference - place of jar files

Thanks and Regards,

You CAN create dynamic configurations for a Form element to dynamically

configure the Settings (DTMF/Voice input) and Audio Prompts. BUT - I

don't think there is any way that you can create exit states dynamically.


You don't happen to have a JAR that will do this do you? I don't know how to start a java element, but I can modify the code if I already have one.

Here's an example of a Dynamic Config for a Form element that I use in my CVPD-Java Programming Class.

It's not the best java ever written, but it gets the job done.

You could always come to training! I teach CVPD-Java once every few months in the US.

And I'll be in Paris in Sept!

//These classes are used by dynamic voice element configurations.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.audium.server.AudiumException;
import com.audium.server.proxy.VoiceElementInterface;
import com.audium.server.session.ElementAPI;
import com.audium.server.xml.VoiceElementConfig;

public class JaninesDynamicDBVoiceMenu implements VoiceElementInterface {

public VoiceElementConfig getConfig(String name, ElementAPI data, VoiceElementConfig defaults) throws AudiumException {

   // *******Ignoring base config from Studio. Must re-instantiate 'defaults' ***
   defaults = new VoiceElementConfig();
   // Set up the Audio prompts for the initial audio
   VoiceElementConfig.AudioGroup initialAudioGroup  = AudioGroup(
     "initial_audio_group", true);// true=allow bargein

   // Set All Required settings
   defaults.setSettingValue("inputmode", "both");
   defaults.setSettingValue("noinput_timeout", "5s");
   defaults.setSettingValue("form_max_noinput_count", "3");
   defaults.setSettingValue("form_max_nomatch_count", "3");
   defaults.setSettingValue("confidence_level", "0.4");
   defaults.setSettingValue("modal", "false");
   defaults.setSettingValue("field_name", "foundation_fld");
   defaults.setSettingValue("maxnbest", "1");
   defaults.setSettingValue("secure_logging", "false");

   //create the audio items for.wav <insurancetype>, press.wav, <keypress>
   VoiceElementConfig.StaticAudio promptFor = StaticAudio("For ", "for.wav");
   VoiceElementConfig.StaticAudio promptIns;// get this from the DB
   VoiceElementConfig.StaticAudio promptPress = StaticAudio(" press ", "press.wav");
   VoiceElementConfig.StaticAudio promptDtmfKey;
   // Connect to DB to get caller's insurance types
   Connection con = null;
   Statement st = null;
   ResultSet rs = null;
   // get a connection to dbhere.
   try {
    con = DriverManager.getConnection("jdbc:mysql://localhost:3306/rx", "root",
      "root"); // rx is the db name

    // this reads and displays all the records in the rxtable
    st = con.createStatement();
    System.out.println("SELECT INSTYPE FROM INSURANCE WHERE ACCTNUM="+data.getElementData("getAcctnum", "value"));
    rs = st.executeQuery("SELECT INSTYPE FROM INSURANCE WHERE ACCTNUM="+data.getElementData("getAcctnum", "value"));
    int index=0;
    while ( {
     // get values by col index or by name
     String instype = rs.getString("instype").trim();
     index+=1; StaticAudio(instype, instype+".wav"); StaticAudio(index+". ", index+".wav");  
     // now do the Settings for voice_keywords and dtmf_keypresses
     defaults.addSettingValue("voice_keyword", instype); //omit this if doing DTMF only
     defaults.addSettingValue("dtmf_keypress", index +"["+instype+"]"); //1[auto]
    // Add the initial Audio Group to the Voice Element Configuration.
    // Return the new configuration
    return defaults;
   } catch (Exception e) {
    // TODO Auto-generated catch block
   } finally {
   try {
    if(rs != null) rs.close();
    if(st != null) st.close();
    if(con != null) con.close();
   } catch (SQLException e) {
   return defaults;

janinegraves You usual.  I may be interested the class. Do you have an offering that would allow me to attend remotely?(TelePresence, WebEx, etc)

Let me know.

Yes, we offer remote training using a combo of HiDef videoconf and

Webex. Go to and you'll see the

classes that allow remote training.

Recognize Your Peers
Content for Community-Ad