What are Variables?
Variables are containers of information. They can store a response that you collected from the caller, or a parameter passed to / from a web server.
You can create your own variables for each voice site, called Site Variables or use default System Variables. System Variables are used to represent information made available by the system that can be used in each site, such as Caller ID, Call Duration or Dialed Number, and generated for each call coming to a voice site.
Declaring Site Variables
Before a variable can be used in a Voice Page, it must be declared. Variables are declared in the Site Variables tab. Assign the variables meaningful names that remind you of the type of information they will store (for example, "CarMake" , "service_preference", etc).
Some keywords are reserved, and shouldn't be used as variable names: CX Builder, ANI, DNIS, System, CallDuration, CallLength, CallerID, DialedNumber, regardless of case.
Variables can be scalars (hold one value) or lists (hold multiple values). A scalar always loses its current value when assigned a new one. For example, when a caller answers the same question twice in the same call, if the value is a scalar the variable will hold the second answer. A list always appends new values to the end.
Private variables should be used for highly sensitive data like credit card information. Private variables are not stored anywhere on the CX Builder system and are only used for runtime operations. Private variables will only persist when transferred with a secure connection (https) using a Transaction Page. Private variables cannot be saved in a Data File.
Initial values can be declared on the Site Variables page. In some cases, this will eliminate the need to create a Logic Page to initialize variables. Private variables can also be initialized. After the page is saved, the initial value of the private variable will appear as ******.
Assigning Values from Caller Responses
The system collects values from callers in the following occasions:
- When a caller responds to a Question Page.
- If it is a Keyword Question Page, it will save the value entered in the Save Value field.
- For other Question types, it will save the response.
- When a caller leaves a recording through a Voicemail Page, it will save a link (URL) to the sound file.
You can collect values from multiple different questions into one variable. If you do this, use a scalar if the questions are alternative wordings of the same concept ("What car do you drive?" / "My mistake, let's get that car again."). Use a list if you intend the variable to aggregate heterogeneous responses into an array (if it simplifies your processing in your scripts).
Playing back Variables in the IVR
Any variable defined in the system can be played back to the caller as a Prompt. Wherever you can specify a Prompt Series, you will be able to add a variable as a prompt.
When playing variables, you can choose how they are supposed to sound. If the variable is a List you can play either the last value collected, or all of them. There are 10 variable playback types. These are:
- Sound File
- Digit Sequence
- Phone Number
- Credit Card
- Spell out
- Smart Play
SmartPlay is an advanced technology that makes sure your variables are played with sound files, for the best possible application quality. You can explicitly choose how the variable should be played (for example, "Phone Number") or let the system guess.
Submitting Variables in Transaction Pages
Transaction Pages can submit the values stored in variables by adding them as parameters. You can name the parameters differently than the variables if your script so requires. You can Store or Delete (clear) the values from variables after they have been submitted. Private variables must be submitted with a secure connection (https).
Variables in CX BuilderXML
You can define variables in a CX BuilderXML document. To declare one or more variables to be used across the Voice Site for the duration of the call by using the VARIABLES. For example,
<source lang="text"> <VARIABLES> <VAR name="CarBrand" value="audi"/> <VAR name="ListOfCarBrands" value="audi, bmw, honda" type="list" separator=","/> <VAR name="CarModel"/> </VARIABLES> </source>
To submit these runtime-defined variables in other Transaction Pages, enable the Store (CX Analytics) check box.
A common technique is to declare variables in the "Site Variables" tab, and then assign values to them through CX BuilderXML. This allows you to play variables as prompts for which you only know the values after a query to your web server.
Because certain data collected from callers (primarily credit card information) should not be stored in CX Builder's data center, use the "Private Variable" to store data. If you mark a variable as private in the Site Variables screen of a Voice Site, the system will not persist its value anywhere.
Notes about Private Variables:
- Private variables will not be stored post-call anywhere in our data center(s).
- When using the Credit Card & Expiration response type in a Question page, only private variables will appear as an option. If there are no private variables defined, those response types will not be displayed as an option.
- If a private variable is used in a Transaction Page, it will require an https get or post URL.
- Private variables will not be displayed in the variable menu on Data Pages.
- Private variables will not be displayed on variable menus in Call Analyzer.
- Private variables and values will not be displayed in the Call Queue Monitor
- When displayed with other variables in the variable menu, private variables will have an indicator to the right of the value (like a list variable).
- You can initialize a private variable on the Site Variables Page but the value will not be shown on the page and it will be encrypted in our database.
If you mark a variable as private in the Site Variables screen of a Voice Site, the system will not persist its value anywhere. It will be available, during the phone call in Logic Pages and Transaction Pages (and as Prompts or destinations in other pages)
Private Variables will not be available to store in Data Files or in the Call Reports. Private Variables are not editable in the Call Queue Monitor.