Summary
I want to show how to utilize an XML Document stored on UCCX to make changes to an ACD call flow dynamically. My example is that the Help Desk wanted an easy way to forward incoming ACD calls over to their WIFI Phone during slow times when staffing and call volumes were lower. They also wanted the ability to insert a prompt at the beginning of their ACD when they had known issues, so that end-users could be notified without having to wait on hold for an available agent.
How To Steps
- Determine which attributes you want to manipulate, and the required data types. The solution I designed required a boolean for whether or not to transfer to the WIFI Phone, a string to house the 4 digit prompt to play at the beginning of the call, and a boolean for whether or not there was a prompt that needed to be played.
- Design the ACD Script that you would normally have for call flow, and add the script elements to handle the additional attributes based on their data types. I recommend creating the variables as parameters, so that you can change them on the webpage, and run some test calls without worrying about the XML. In my application the Help Desk created a spreadsheet with their "canned" front-end messages, so we assigned four digit prompt names, and had those recorded to facilitate the testing of the script.
- Design the script that I call the "management" script, because it's only function is to manage the primary ACD Script. My "management" application basically consisted of checking a password (a simple string parameter), then a menu for whether they are transferring to the WIFI, or setting a front-end prompt message. A couple of things to think about - you don't want more than probably 1 simultaneous session, and I just recorded these prompts myself, because they are only heard by internal IT Staff.
- Create the XML Files - I built this quite some time ago (also, I am not an XML expert), and somebody helped me along the way... However, this really consists of two files, the XML file itself that includes the data, and the transformation file which allows you to write the file. In my example you will see that hdmgmttemplate.xml sets the structure for the file, and has %description% for the attributes themselves. This is used as part of the "Keyword Transform Document" step to map the variables to the position in the file where they need to be written. When I created the hdmgmt.xml file I actually populated it with valid values, so that I could avoid any errors relating to no data being available when writing the steps in the script.
- Upload the XML Files - I have these in my "C:\Program Files\wfavvid\" directory currently, but while writing this document I came across something that indicated they should be in the Document repository. If anybody has any comments on that I would appreciate them, and I might try that during a maintenance window or on my development box. It seems to make sense, because with the move to Linux in UCCX 8.x and higher you won't have directory access to the "wfavvid" directory.
- Modify the scripts to include the necessary statements to utilize the XML. The steps I used are as follows...
- Create File Document - Define a document variable by referencing the file name
- Create XML Document - Specify that the document is an XML Document
- Get XML Document Data - This step actually retrieves the data element. You will need a step for each data element, so for my example I did this step three times.
- Keyword Transform Document - Defines which variables need to be written to which "template placeholders" as I indicated above
- Write Document - Write the new XML Document out to the disk on UCCX
- Test, Test, and Test
The solution was originally built and deployed on IPCCX 4.x utilizing a Standard license. We have since upgraded to Enhanced licensing on a UCCX 7.x environment, and still utilize these scripts. If you have Premium licenses then you may find it easier just to write these values to a Database Table.
I have included my scripts, as well as my XML files for reference... Let me know if you have any questions...