Cisco CVP & Call Studio Scripting
Customer Voice Portal (CVP) is a component of Cisco’s Contact Center Enterprise (PCCE) solution that manages IVR interactions. It enables customers to navigate through menus and perform tasks using their telephone keypad or voice commands.
Call Studio is a graphical development environment provided by Cisco for creating scripts used in CVP applications. It allows us to design call flows, prompts, and menus for the CVP Apps.
Preparing Audio
CVP only accept a very specific type of audio, that’s why we’re converting a standard mp3 into a wav file with these specifications
Now we put the audio on CVP’s IIS Web Server path
Then the audio should be accessible on the default web port 443
Creating CVP Micro App
On CCE Admin » IVR Settings » Network VRU Scripts, create a new script to play the audio
- PM : Play Dedia such as .wav files or media from an external VoiceXML source
- longview : the longview.wav file placed on the IIS web server
- A : default Application Media library
Now on the ICM Script, we can call the Longview Micro App so the audio is played
And here calling it to the Dialed Number (which in this case is 6000) shows the app successfully plays the audio
Custom Path & Peripheral Variable
Now let’s say we move the longview.wav to a subfolder “helenamusic”
And we modify the Longview Micro App to not specifically play the longview.wav, but to dynamically play audio based on the supplied variable
- -1 : The app will take the value of Peripheral Variable 1
Now on ICM Script, we set the Peripheral Variable with the value of “helenamusic/longview.wav” and send it to the Micro App
This will make the app search the audio to the subfolder “helenamusic” as its told to
CVP Call Studio
Creating CVP App
If we want to make a more complex application, we’re gonna need a beefier tool, which in this case is the Call Studio.
Here we created a new Call Studio Project named helenaapp
On the app’s properties, we’re gonna set the audio root path to be the CVP’s Tomcat Web Server, which is on port 7000
The tomcat root path can be found here
Here we’re gonna give it a simple 2 Menu options, press one to listen to longview music and press two to get connected to agents
We also set the audio for the menu prompt
Next we create Audio Prompts just to play confirmation audio of the selected menu
Lastly, end with Subdialog Return and carry the selected menu on the Caller Input variable so it can be used on ICM Script
Deploying App
Next export the app in archived format
Now back on CCE Admin, on IVR Settings » File Transfer, upload the exported app
The app will be deployed onto the CVP Server
Creating ICM Script
Here we create an ICM Script with “user.microapp.ToVXML[0]” set to “application=helenaapp”, and then to take the “Call.user.microapp.caller_input” as a parameter to decide wether a music should be played or to forward the call to an agent
And when we make a call and choose option 2, our call is forwarded to an available agent
Connecting to SQL Database
CVP App can also make a connection to Database in order to fetch some needed external data, here first we need to install the JDBC driver
- A JDBC (Java Database Connectivity) driver is a software component that enables Java applications to interact with a database management system (DBMS). It provides a set of Java interfaces for connecting to a database, sending queries, and retrieving results. Essentially, it acts as a bridge between Java code and the database
Here’s the database that we will connect to from the CVP App
Next, we need to edit the context.xml in order to tell the app regarding the details of the database that we will connect to
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Context>
<Resource
url="jdbc:sqlserver://win1.helena.gg:1433;databaseName=dummy;username=sa;password=thepassword;encrypt=true;trustServerCertificate=true"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
maxActive="100"
maxIdle="30"
maxWait="10000"
removeAbandoned="true"
removeAbandonedTimeout="60"
autoReconnect="true"
logAbandoned="true"
username="sa"
password="thepassword"
type="javax.sql.DataSource"
Auth="Container" name="jdbc/dummy" />
</Context>
After that, we create a Digit Input Element to receive the 4 digits ID from the caller
Then use the Database Element to create a query to the database using the input ID as a parameter
Next add a Decision Element to check wether the query returns more than 0 rows or not
And finally, pass the Digits Value along with the returned data from the database query to ICM Script
Here we map the passed value from CVP App to the Peripheral Variables
And when we make a call, the values on the Peripheral Variables are shown here
Connecting to REST API
Other than connecting to database, we can also connect to a REST API to get even more data for our app.
Here we have a simple dummy API that returns the data of “credit_card” and “street” when hit on the user’s endpoint
Back on our Call Studio, we add a Rest Client Element and point the URL to our dummy API using the result of the database as the endpoint parameter
And on the Set Value Element, we’re taking the “response body” and take only the value that we need, which in this case is the value of “credit_card”
Lastly, as usual pass the data to ICM Script
And when the call connects, we can see the data from REST API is fetched into Variable 4