I don’t know where this blog will take us..but my initial thoughts and ideas are exciting enough and I hope to spur lots of conversations on “coding” for Contact Center and Interactive Voice Response (IVR) for the Cisco Contact Center Express (CCX) Platform (at least initially). My goal is to expose the product for what it is: and you’ve got to ask yourself..well what is it? Actually it is a lot of different things..if you are on this site you should know the basics..and I will rarely go over the basics of the Platform..Basics of Programming (coding) YES! Basics of CCX Integration etc..HARDLY! UCCXX is a very powerful platform for Contact Center/IVR Application Development..and this blog is centering around How to Develop (Scripts/Apps) for it..
What precisely does that mean..Develop Scripts/Apps for the platform?…well we’ll be writing Java based (granted we have the appropriate Enhanced License) Applications..whether IP IVR and/or Call Center (logic) Applications (more than likely both). Even if you don’t have a “Java license” you still should be able to write C-Based Programming expressions. You could be asking..how are Java and C related..or what is Java..what is C? Java is a C enspired language based on C++..an object oriented programming (OOP) language and the syntax is based on C. You can use the traditional iF, SWITCH, FOR, WHILE, DO WHILE (not a DO Step) type statements and not have to instantiate Java Objects (which you can only perform when you have an Enhanced CCX License or above). You may not know what some/any of this stuff means at this point..but I’ll eventually use these in some of the scripts that I show as examples..and will try to explain them then..
Let’s dive in. The first thing one needs to understand (when developing applications) are the variables..When I first encountered CCX and a Script, I had a very hazy idea what these variables were all about..in turn, I would turn down or ask others to help me when I needed to work a project that included scripting. You may be able to relate with me here, so the rest of this post will talk about variables and if you need any further help in the explanation I will answer your questions 2 ways to Sunday..eventually, I will break down variables to the nth degree once content starts filling up on this blog..But I digress..
In Scripting/App Development you are going to be working with a Programming Language, and most of the time, the first item you will encounter when working with a language are the Variables or sometimes referred to as Data Types. In the Script Editor, there is a “panel” made specifically for Variables..it is called the Variable Pane.
The variables that are defined in the variable pane are GLOBAL Variables in that they have SCRIPT-WIDE SCOPE; in Java these would be considered Instance Variables. All that means is in every STEP that applies (Palette Pane) the variables that are defined in the Variable Pane can be referenced/used in the Design Pane (where Steps are utilized); that means you don’t have to “re-declare” the variable in the Expression Editor of the Step (to declare/create a variable in this editor you type, String strng = “ “: this is an example of a local variable ). So if the String strng has been created as a Global Variable then in the expression editor you can reference the variable and assign value to it: strng = “My String”(you don’t have to put String in front of strng first here).
The most common variable(object) types you will encounter in your Applications will be (there are many more variable types than this and when you have a “Java License” there are many more Objects you can create (objects being a more complex/opaque form of a variable):
int (Integers) String Prompt boolean Date Document
Integers are decimal numbers between 2bn and -2bn; they are typically used as Counters, meaning, as you are in a Queue Loop..keep count of how many times you Loop..at a specific Count do something…in the expression editor, if you create an int it looks like this:
int iLoopCounter = 0;
A String is a Data Type that is surrounded by “” (quotation marks; if I would have put space in the example the value of the String would be white space; here it is merely empty…sometimes I like to make the initial value as null but that can be dangerous if you try to use it and don’t assign value to it..then you get a NullPointerException and your app will “crash”). The String is the most common Data Type for our Scripts (Script and App are interchangeable). It is used in many different scenarios..such as Date Formatting for XML Document Comparisons..If I can be consistent with the blog, you will understand Strings and Java String Methods inside and outside…
A Prompt is a WAV recording..typically stored on the CCX Server in the appropriate repository (Prompt). Typical values of a Prompt look like such: P[DEPARTMENT_FOLDER/6000.wav]. There are a lot of other different ways to assign value to a Prompt and again we will explore those in more detail in another post…
A boolean is true/false. These are useful in IF logic statements; default values for boolean data types is false; normally I declare a boolean like such:
boolean bHoliday = false;
A Date is a Java Object that refers to a Date of course. A Date data types initial value in the Cisco CCX Editor is D[now] (which is “proprietary” to Cisco)…Dates can look like the following:
java.util.Date dt1 = D[now]; java.util.Date dt2 = new java.util.Date();
You might ask me what the heck is that: java.util.* and to put it in the most simple form I can: it is the Java Package that the Date Class is defined in.
A Document is..wait for it..a Document..typically we use and parse XML Documents in our Apps (for instance a listing of Holidays). We will dive into XML devops in lots more detail..so stay tuned!
Let’s close out here with some “disclaimers”. If I get any viewers to this blog, then sometimes things might get thick..Let’s not forget the goal of the blog…we are ultimately facilitating our customers Business by using the tools at our disposal. There may be more than a few of you guys who see something I write that you’ve never done or seen before in a Cisco CCX Script..be prepared to have your mind blown if you’ve never openned and closed a CURLY BRACE..and be prepared to look at what is there and fume that what was written cannot be managed by whomever I/you will be leaving it with..Let’s deal with that piece later..we don’t get paid for leaving something that can’t meet our customer’s business requests/needs and sometimes the code we write isn’t cheap..the business customers who truly know their business tend to know what part of their business is expensive to develop for ultimately. I don’t know everything about being a Software Developer..feel free to blow my mind too! CCX Scripts are highly customizable and unless you use cookie cutter scripts all the time (like I did when I didn’t know how to script) you will need to get outside the box..this is where the action starts..I don’t want to do your work for you (last I checked the salary for a Cisco UC Engineer is pretty decent), so beware now, I may point you to Cisco’s CCX Script Development Guides (Vol I – III).