Professional Documents
Culture Documents
Document Information Virtual Hold for UCCX, Installation and Configuration Guide Publication Date: September 4, 2013
Before using this document, ensure that you have the latest version. For customers and partners, visit our Online Document Library at http://odl.virtualhold.com. For VHT employees, visit Salesforce at https://login.salesforce.com. It is recommended that you subscribe to frequently used documents to receive notifications about changes to those documents. Download the Virtual Hold Software from the VHT Download Center at https:// virtualhold.flexnetoperations.com. Copyright Information Printed in the United States of America. Except as permitted under the Copyright Act of 1976, no part of this publication may be reproduced, distributed, e-mailed, or displayed in any form or by any means, or stored in a database, retrieval system, or other media without the prior express written permission of Virtual Hold Technology, LLC. Disclaimers This document is the property of Virtual Hold Technology, LLC. Its contents are proprietary and confidential. Licensure Virtual Hold is a licensed software solution. The use of each Virtual Hold product requires permission, and a valid license from Virtual Hold Technology, LLC.
Contents
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Business Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Solution Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Inbound Call Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Outbound Call Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Design Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Inbound Callflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Chose Hold Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Abandon in Queue Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Chose Callback Scenario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
UCCX Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Troubleshoot UCCX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Cisco Unified CCX Real-Time Monitoring Tool (RTMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Download the RTMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Start the RTMT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . View Logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 52 53 53
Writing/Generating Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Annotated Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
High-Level Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Overview
Overview
This document provides guidance for the VHT-Cisco Unified Contact Center Express (UCCX) integration process. In particular, it covers the following topics: A typical architecture for this solution. Advice for designing a solution. A typical callflow for this solution. Instructions for preparing your environment.
Benefits
The VHT-UCCX integration helps VHT provide its solution to departments, branches and small- to medium-size contact centers planning to deploy entry-level or mid-market contact center solutions. This easily deployed solution enables companies using UCCX to leverage Virtual Holds PTK Queue Abstraction feature, which means this integration is not dependent upon CTI interfaces. This Virtual Hold integration helps transform the customer experience via: Conversation Bridge (multichannel callback platform) Intelligent Callback (for mobile app users) ASAP Callback Scheduled Callbacks Proactive Notification Queue Watch Queue Info
Business Perspective
The VHT-UCCX integration leverages a number of UCCX platform capabilities, including: VoiceXML HTML Web integration Custom Java extensions The VHT-UCCX integration requires the Unified CCX Premium, which adds full Unified IP IVR support (including database integration), Voice eXtensible Markup Language (VoiceXML), HTML Web integration, custom Java extensions and e-Notification services such as e-mail. The outbound feature is also bundled with the Premium package. UCCX can be implemented using two deployment models: the Single-Server Non-High Availability Deployment Model and the Two-Server High Availability Deployment Model. However, the VHT-UCCX integration has only been designed and validated with the single-server model. UCCX supports up to 400 agents and 300 Unified ports. A Unified IP IVR port refers to a premium selfservice port for the Premium package. See UCCX Platforms for more information about all available UCCX packages.
Overview
Solution Architecture
Cisco Unified Communications Manager (UCM) sends a route request to UCCX when a dialed number associated with a CTI Route Point is called. UCCX software selects an available CTI Port with which the dialed number is associated from the CTI Port Group. UCCX returns the CTI Port extension to UCM, which sends a ring message to UCCX to set up a call to that extension (CTI Port). The UCCX server begins executing the script associated with that triggers application when UCCX receives the ring message. The first step in a script is typically an Accept step, which will answer the call by sending a message to UCM. This establishes an RTP stream between the selected CTI Port and the Voice Gateway (VG) port (or calling IP Phone). The application can then prompt callers for input and provide the caller selfservice. When either the caller hangs up or the application executes a Terminate step, UCM tears down the call.
Figure 1: Cisco Unified CCX Integration Architecture
Overview
Control is returned to the UCCX application, where queuing treatment is provided, if the caller elects to hold. The callers Virtual Hold context is saved before disconnecting the call if the caller chooses a callback.
Design Overview
Design Overview
UCCX leverages the custom Java wrappers to integrate with Virtual Hold via the Platform ToolKit Web service. This Web service provides an interface to track the calls that enter and leave the queue without having to depend on a CTI connection.
Inbound Callflow
This section outlines the various scenarios that can occur during the inbound callflow.
Design Overview
UCCX invokes the custom Java plug-in (provided by Virtual Hold) to notify Queue Manager that the call is de-queued from the skill, and it can clean up the call with the appropriate final fate.
Otherwise, control of the call is returned to UCCX so it can queue the skill appropriately.
Design Overview
UCCX server begins executing the script associated with the trigger application. The call is accepted by UCCX, and an RTP stream is established. After self-service is provided to the caller, Virtual Hold VXML Interaction Server (VIS) is invoked. VIS checks for the queue conditions in Virtual Hold by invoking the Platform ToolKit (PTK) method getSegmentState, which, in turn, sends the message to VHT Queue Manager. Queue Manager responds with EWT and whether the call should be offered Virtual Hold treatment. If treatment should be offered: - VIS requests to create an interaction by invoking PTK method createInteraction. An Interaction ID is returned to VIS, and then VIS provides Virtual Hold treatment. - Upon the callers request to remain on Hold, VIS invokes PTK method InteractionSendToQueue so Queue Manager expects the call to be queued. - VIS returns control to UCCX with Caller_input 1. - UCCX invokes the custom Java plug-in (provided by Virtual Hold) to notify Queue Manager that the call is queued to a skill and to include it in the EWT calculation. - UCCX queues the call to a skill and provides a queue treatment. The Caller abandons in queue.
UCCX invokes the custom Java plug-in (provided by Virtual Hold) to notify Queue manager that the call is de-queued from the skill with reason of Abandon, so Queue Manager will clean up the call with the appropriate final fate.
Otherwise, control of the call is returned to UCCX so it can queue the skill appropriately.
11
Design Overview
Design Overview
Queue Manager responds with EWT and whether the call should be offered Virtual Hold treatment. If treatment should be offered: - VIS requests to create an interaction by invoking PTK method createInteraction.
An Interaction ID is returned to VIS, and then VIS provides Virtual Hold treatment. - Upon the callers request for a Callback, VIS collects the callback information and invokes PTK method InteractionRequestContact so Queue Manager can create a Callback. - VIS returns control to UCCX with Caller_input 0, and then UCCX releases the call.
13
Design Overview
Outbound Callflow
The following steps describe an Outbound Sequence Scenario: Queue Manager initiates a callback request to Outbound Contact Client (OCC), which sends an HTTP POST to UCCX. UCCX extracts the callers contact information from the HTTP POST and places the call through the Voice Gateway. If unsuccessful, then UCCX sends an HTTP Response to OCC; in turn, OCC sends the Callback Response to Queue Manager, and then the call is rescheduled. If successful, the call is redirected to a telephony trigger. Note: Redirecting the call will force UCCX to consider the call as an inbound call, which allows UCCX to pass the Callback user data to the Agent Desktop. The telephony trigger executes UCCX script to invoke VIS, which uses the PTK method GetInteractionData, to get all interaction-related data. VIS receives the interaction-related data and provides outbound treatment to the caller. If the Caller decides to speak with an Agent, VIS invokes PTK method InteractionSendToQueue to notify Queue Manager to change the state appropriately and expect the call to be queued. VIS returns the Caller Input of 1 to UCCX, which increases the calls priority. UCCX invokes the custom Java plug-in (provided by Virtual Hold) to notify Queue Manager that the call is queued to a skill. UCCX queues the call to a skill and provides a queue treatment. When an agent becomes available, UCCX sends a message to UCM, which will connect the caller with that agent. UCCX invokes the custom Java plug-in (provided by Virtual Hold) to notify Queue Manager that the call is de-queued from the skill, and it can clean up the call with the appropriate final fate. An RTP stream is established between the Agent and the Caller.
14
Design Overview
15
Design Overview
Virtual Hold version 7.5 OCC version 1.2 PTK version 4.0 Microsoft Internet Information Services (IIS) VIS version 4.2 R2, which requires the following: Java Runtime Environment (JRE) and Java Development Kit (JDK) Apache Tomcat version 6.0 or 7.0 File Extraction Software Custom version 1 .jar files (VHT_PTKWrapper_v1_0.jar, VHT_OCCWrapper_v1_0.jar, VHT_Logger_v1_0.jar)
Known Limitations
The following features are not currently supported in this solution: Answering Machine Detection Callback Double Check (CBDC) with rescheduled callbacks Dial Department Dial Extension IVR Extension Groups Line Status in Queue Watch Proactive Notification Notify Rapport
Prompt Recorder
Design Overview
17
4. Click Upload Custom Jar Files, which opens the Document Management page. 5. Click Upload New documents, which opens the Upload Document pop-up window. 6. Browse to location of the .jar file you want to upload. The file upload pop-up window will open. a. Select the .jar file, and then click Open. This will return you to the Upload Document popup window. 7. Click Upload. This adds the file to the classpath. 8. Click Return to Document Management.
Restart Cisco Unified CCX Engine and Administration, and Network Services
After assigning the Java .jar file to a classpath, you must restart the Cisco Unified CCX Engine and Administration, as well as network services. Perform the following to complete this process: 12. Select Cisco Unified CCX Serviceability from the Navigation drop-down in the upper-right corner of the page, and then click Go. The Cisco Unified CCX Serviceability page will open. 13. Navigate to Tools > Control Center - Network Services. 14. Under the System Services section, select Cisco Unified CCX Engine, and then click Restart. The status section below Restart will indicate the service is restarting. When the status indicates Successfully updated the status of all services, proceed to the next step. 15. Under the Admin Services section, select Cisco Unified CCX Administration.
19
16. Click Restart, and then click OK on the pop-up window. The status section below Restart will indicate the service is restarting. When the status indicates Successfully updated the status of all services, proceed to the next step. 17. Restart the Cisco Unified CCX Editor if you were logged in to it during the preceding steps. You can now use the custom .jar in the Cisco Unified CCX Editor steps. Note: To delete . jar files, see the Appendix.
20
vht_sub_get_segment_state.aef vht_sub_call_disposition.aef
Inbound Callflow
Note: An existing call center using Cisco Unified CCX likely already has an inbound trigger and application created. Therefore, it should not be necessary to create new ones. You will only need to create outbound triggers and applications. Call the VHT Offer Script The main UCCX script needs to call the subflow step into the VHT offer script, vht_offer.aef. 1. Open the Cisco Unified CCX Editor, and then open the Open Script window via the following: a. File > Open. b. Select Script Repository from the navigation pane at the left, and navigate to your inbound script. Click Open to load the script into the editor. 2. In the navigation tree, expand General, and then drag the Call Subflow to where you want to call VHT_Offer script. See the figure below for an example.
21
3. Right-click on the Call Subflow, and then select Properties. The Call Subflow properties pop-up window will open to the General tab. 4. Click the Subflow Name drop-down arrow. Select SCRIPT[VHT/vht_offer.aef] from the list. This is where you target another script. Make sure Disable Interruptions is set to No.
Figure 8: Call Subflow General Tab
5. Add Input variables to the Inbound Script you imported from the Download Center: a. Open the New Variable dialog box by clicking the New Variable icon at the top-left corner of the Variable pane of the UCCX Editor window to open the New Variable dialog box. b. Provide a Name. c. Provide/Select a Value. d. Define the variable Type (i.e., String). e. Select Parameter. f. Click OK.
22
6. On the Input Mappings tab, click Add to map the following input variables with appropriate values to the vht_offer.aef script exactly as follows; otherwise, they will not map correctly: tenant visUrl csq ptkUrl segment(optional) If this is not passed in, the DNIS will serve as a segment.
Outbound Callflow
This section provides details for establishing an Outbound Callflow. When it is time to make a callback, the OCC issues an HTTP Request to the HTTP Trigger with the following variables: tenant interactionId csq visUrl ptkUrl callFlowType
23
Get User Data to the Agent Desktop Create Extended ECC Variable: 1. In UCCX Editor, go to Settings > Expanded Call Variables. 2. Click New Variable arrow, which opens the Edit Expanded Call Variable dialog (see the figure below): a. Enter Name as vhtTreatmentVars b. Select Array from the Type drop-down. c. Enter Description (optional)
Figure 11: Expanded Call Variable
In order to pass user data to the Agent Desktop, it is necessary to use a Call Redirect, in lieu of a subflow, to pass data collected by the Outbound Contact Client (OCC).
d. Select Script from the drop-down. Select SCRIPT[VHT/vht_callback.aef] Note: A script must be associated to this application in order to add it. Otherwise, a dialog pop-up will instruct you to Please select a script name. Scripts should have been uploaded prior to creating this application for this reason.
e. Enter a Description by clicking in the fieldit will populate automatically. f. Select Yes to enable.
g. Leave Default Script as System Default. 6. Click Add. Create Trigger for New Application 1. Once the new application has been added, an Add new trigger link will appear on the left side of the Cisco Script Application screen. If you already returned to the Application Management screen, you can click the Application name to go to the Cisco Script Application screen. 2. Click Add new trigger. The Add a New Trigger pop-up window will be displayed. 3. Select Cisco HTTP Trigger, and then click Next. This opens the HTTP Trigger Configuration pop-up window. 4. Enter the URL as /vhtoutbound. 5. Select your appropriate regional Language; e.g., English [en_AU]. 6. The Application Name will already be populated with the name of the Application. 7. Enter the Maximum Number of Sessions. 8. Enter the Idle Timeout (in ms). Change the default to 2000. 9. Select Yes to enable. 10. Click Add. An HTTP Trigger has now been created. Create Application for Unified CM Telephony Trigger 1. Log in to Cisco Unified CCX Administration. 2. Go to Applications > Application Management. 3. Click Add New to open the Add A New Application screen. 4. Select Cisco Script Application from the Application Type drop-down. 5. Click Next. The Cisco Script Application screen will open. a. Enter Name. Note: This name will be used in the Outbound script that will be created later. b. ID is auto-created. c. Enter Maximum Number of Sessions. d. Select Script from the drop-down. Select SCRIPT[VHT/vht_ob_treatment.aef]
25
g. Select a Default Script from the drop-down. 6. Click Add. Create DN-Based Trigger for New Application 1. Once the new application has been added, a new trigger link will appear on the left side of the Cisco Script Application screen. If you already returned to the Application Management screen, you can click the application name to go to the Cisco Script Application screen. 2. Click Add new trigger on the left side of the screen. The Add a New Trigger screen will open. 3. Select Unified CM Telephony Trigger as the Trigger Type, and then click Next. The Cisco Unified CM Telephony Trigger Configuration pop-up will open. 4. Enter the Directory Number of any Route Point that is available/not being used by any other Application or Trigger. Note: Save this value for later with when configuring the OCC. 5. Select your appropriate regional Language; e.g., English [en_AU]. 6. The Application Name will already be populated with the Cisco Script Application Name. 7. Enter a unique Device Name. 8. Enter the Description. 9. Select the Call Control Group from the drop-down list. Note: Remember the value that you selected in this step for later use; e.g., Call Control Group 1(3). The 3 is the number you would need to remember (see the figure below).
Figure 12: DN-Based Trigger Configuration - Call Control Group
26
10. Click Add. A link for the newly created Trigger will appear on the left side of the Cisco Script Application screen. Set the callControlGroup Variable 1. Go to the UCCX Editor and open the vht_callback.aef script from the VHT folder. 2. Go to the list of variables, and find callControlGroup from the list. 3. Set the Value to the number that was set in Step 9 of the previous section, Create DN-Based Trigger for New Application.
Figure 13: Callback Script Variables
4. Save the script, and then close the script. 5. Return to the UCCX Administration page, and then navigate to Applications > Application Management. Select the HTTP Application created earlier for this script (VHT_HTTP), and then click Update; see Create Application for HTTP Trigger.
c. PlatformToolKitWS v4.0 is installed by default as part of the InstallShield. Expand QueueInfo to verify it has been selected. d. At the SENSe Service to Monitor screen, clear IVR. Note: You can modify the SENSe .xml file to monitor/control OCC after the install. Note: See the Virtual Hold Deployment Guide for more details on how to complete InstallShield screens.
1. At the Switch Connection screen, click Add to open the Switch Types window.
Figure 11: Switch Types window.
28
5. At the Queues window, click Add. The Callback and Holding Queues window will open. After you close the Queues window, the Callback and Holding Queues window appears.
29
6. Click Add to open the following Callback and Holding Queues screen.
Figure 16: Callback and Holding Queues Window
a. At the top of the Callback and Holding Queues window, select the Site Name. b. In the Callback Queues Section of the window, perform the following steps: Enter the Callback Queue ID (CSQ ID): enter the CSQ name of the Callback Queue. Enter the Transfer Device: where you transfer the call from the IVR at callback or error decision. This is the same CSQ as the Callback Queue ID. Click Create. A message is displayed after the callback queue is created.
c. In the Holding Queues section of the window, perform the following steps: Enter the Holding Queue ID (CSQ ID): enter the CSQ name of the Holding Queue.
30
Enter the Route Device: where you transfer the call at route time decision (the same CSQ as the Holding Queue ID). Enter the Transfer Device: where you transfer the call from the IVR at holding or error decision. This is the same CSQ as the Holding Queue ID. Click Create. A message is displayed after the item is created.
7. When you are finished, click Close. The Configuration Wizard Incoming Extensions window is displayed.
Figure 17: Configuration Wizard Incoming Extensions Window
This window adds Incoming Extensions that reference the proper Callback Queues and Holding Queues. Note: For UCCX integration, configure one Incoming Extension for each Segment in your telephony system. A segment is your Entry DN in UCCX for each skill. Use Treatment Type 20 in order for the Platform Toolkit to recognize the Incoming Extensions as Segments. a. Click Add to open the Incoming Extensions window.
31
b. Enter the Site Name. c. Select the Queue ID: Select the Queue ID that corresponds to the Queue ID in the Queues section. When setting up a Rapport queue to be used to do outdialing, for Extension, enter the QueueID with uppercase RCL as the prefix. For example, a QueueID of VHT_Test would have Extension RCLVHT_Test. If a queue is going to be used for both in- and outbound Rapport calls, there will need to be two separate entries of this incoming extension in the database. One for inbound calls will be setup with the QueueID and the correct DN for the Extension. For example, QueueID of VHT_Test and Extension of 3001. Meanwhile, the Rapport incoming extension will have RCL prefixed to the same QueueID. For example, QueueID of VHT_Test and Extension of RCLVHT_Test. Extension*: Enter the Entry DN (Incoming Extension). Label: Enter a label, such as UCCX Entry DN. Country ID: Enter the country code; for example, 1 if US. Treatment Type: For UCCX integration, use Treatment Type 20. Script Number: This option is not utilized when a VXML IVR is being used. In this case, use Brand and Language settings in the EyeQueue application to select the brand for the segment and language for the IVR profile. IVR Group: Select the corresponding IVR associated with this queue. Holding Queue ID: Select the corresponding Holding Queue (CSQ) associated with this queue.
32
Callback Queue ID: Select the corresponding Callback Queue (CSQ) associated with this queue. Under Threshold Queue ID*: Select the corresponding Under Threshold Queue (CSQ) associated with this queue. IB IVR Group ID: Leave NONE selected. OB IVR Group ID: Leave NONE selected.
d. Click Create. A message is displayed after the queue is created. e. Optional: If you created additional queues, you will need to create an incoming extension for each queue. Repeat the steps above for each queue. f. Click Close when finished.
Skip the Phone Number Configurations screen unless changes are necessary. The Finished screen will confirm you have completed Virtual Hold configuration.
Installing Eclipse
You must install Eclipse on your local machine to build the VXML Interaction Server application. 1. Download the Eclipse for RCP and RAP Developers software for Eclipse Indigo SR2 from http://www.eclipse.org/downloads/packages/release/indigo/sr2 Important: You must install the version of Eclipse RCP and RAP for Developers that is for the Indigo release of Eclipse. Other versions will not work. Confirm that the version you are downloading is for the Indigo release. Tip: Eclipse provides both 32-bit and 64-bit versions. Download the version that is compatible with your local machine, where you are going to build the .war file. To check whether you have a 32-bit server or a 64-bit server, right-click My Computer > Properties. 2. Extract the files to the desktop. 3. Open the Eclipse folder inside the new folder on the desktop. 4. Run eclipse.exe. 5. In 32-bit environments only, if the screen pops up that offers selecting/sharing data, click No. 6. Select a workspace to house the project. You can use the default workspace. Add a note to name the file with the version of VIS. 7. Click OK.
33
Installation
Install the files via the import.xml file. 1. Copy the import.xml file from the Sample Configuration folder and paste it into the folder where you unzipped Eclipse. Note: There are multiple versions of the import.xml file. Be sure to use the file that shipped with your version of the VXML interaction server. 2. To import the import.xml file, perform the following: a. Select Window > Preferences: b. Select Install/Update > Available Software Sites. c. Click Import and select the import.xml file. d. Select Open. e. Verify update sites were added and click OK. 3. To install the software, perform the following: a. Go to Help > Install New Software. b. From the Work with drop-down box, select All Available Sites. c. Once the window is populated with available software components, select the check box next to the OpenVXML 4.0 and Uncategorized labels and click Next. d. Review the Install Details window and click Next. e. Select the radio button to accept the license agreement and click Finish. Note: You may need to expand the section to get to the button. 4. Click OK if security warning appears. 5. Click Restart Now to restart Eclipse.
Validation
1. Go to the Help > About Eclipse. 2. Click on the Installation Details button. 3. Examine the Virtual Hold Extension Library on the Installed Software tab. 4. Confirm that the version number is correct for your version of VXML Interaction Server.
been created). Tip: Use Extract Here to avoid nesting the files. 2. Open the source code folder and copy all of the files into C:\Users\your username\Workspace. Important: DO NOT nest the source files directory.
Figure 19: An example of a nested directory.
Extension Library
1. Go to Help > Check for Updates. 2. Select the Virtual Hold Extension Library from the list of Available Updates. 3. Click Next. 4. Click Next to go to the Review Licenses page and accept the agreement.
35
5. Click Finish. 6. Click OK if security warning appears. 7. Click Restart Now to restart Eclipse.
Platform
Perform Step 2 through Step 5 of Installation on page 33. Note: A window appears stating that some components have already been installed. This is normal. Continue to complete the upgrade.
To package and build the source files into a single file with a .war extension: 1. In Eclipse, select File > Export > Voice Tools > Web Application. 2. Click Next. 3. Select Archive File. a. Browse to the location where you want to save the .war file, and then click Open. Tip: Save the .war file in an easily accessible location, such as the desktop. b. In the File Name field, enter a name for the file (VHT_VIS.war). The file extension is case sensitive and should be written in lowercase. c. Click Open. 4. Click Next. 5. Click Select All. 6. Click Finish. You can ignore any warnings.
6. Change com.virtualhold.toolkit.audiopath to point to the appropriate directory where the name files are stored. For example, C:/Program Files/Apache Software Foundation/Tomcat 7.0/ webapps/ROOT 7. Change com.virtualhold.toolkit.webaudiopath so Tomcat (or some other Web server) can fetch the name files from the directory used above. For example, http://Tomcat (or similar Web server) IP Address:Port/Change com.virtualhold.toolkit.useDnisAsSegment to true if it was set to false. This will enable you to use the calls DNIS as the incoming PTK segment. 8. The setting com.virtualhold.toolkit.disableNameRecording accepts true or false; to disable Name Recording, set to true, to enable, set to false. See Known Limitations about supported UCCX versions prior to changing this setting and make appropriate changes. 9. Save and Close the file.
38
3. Enter the name for this voice project in the Name field, and then select a formatter in the Formatter field in the New Voice Wizard window. The language formatter controls the appearance of certain information, such as date format, etc. in a language-specific manner.
39
4. Click Finish.
40
5. In Windows Explorer, navigate to the VXML Interaction Servers \VHTSample\Media folder and copy the following folder and files. \Grammars folder ContactNumber.grxml file ContactNumber.regex file
6. Paste the copied folder and files into the \VHTCallScript_scriptnumber folder of each VHTCallScript_scriptnumber in each of the customers voice file collections. 7. If necessary, repeat Step 5 (look in the VHT_Sample_languagename\Media Files folder) and Step 6 for Spanish and French language folders and files. 8. In Windows Explorer, drag media files from your computers directory into the new voice project folder in Eclipse. This will open the File and Folder Operation window. 9. Select Copy files and folders and then click OK. Note: Do not select either option to link to files and folders.
Figure 23: File and Folder Operation window.
10. Repeat Step 1 through Step 9 for each set of voice files to be added. This voice project can be associated with a brand in the projects settings. Also, you can modify each individual project to point to this voice file set as the default set.
41
3. In the Properties window, select Build Path to access the Brands tab. 4. Click Configure Languages on the Languages tab. 5. Click Add Language in the language dialog box. 6. Enter a unique language name and click OK in the add language dialog box. 7. Select the appropriate voice project for this language for each brand by selecting the desired voice project from the pull-down menu in each column.
Figure 25: Languages Tab in Properties window.
8. Click OK on the Properties window to apply the new language to the workflow project. The Properties window will close. 9. Once complete, perform a full clean up and build of the workspace (see Build the VXML Interaction Server for more information).
1. Close any open canvases. 2. Open the Build Path properties window for the first project by right-clicking on the project and selecting Properties.
Figure 26: Navigation to Project Properties window.
3. In the Properties window, select Build Path to access the Brands tab. Right-click on the Default brand, and then click Add Brand. 4. Enter a name for the brand in the Name field (VHTCallScript_1 for example) and click OK. Repeat to add more brands.
Figure 27: Build Path screen in Properties window.
5. After adding all your brands, select the Languages tab and expand the Default brand so that each brand under it is displayed.
43
6. If you want to change the voice project associated to a language of a brand (Inherit From Parent is the default value for created brands): a. Click in the language column for the brand. b. Select the appropriate language in the drop-down list. 7. After all brands are added and the voice projects assigned, click OK on the Properties window to apply the new brand to the workflow project. The Properties window will close. 8. Repeat Step 2 through Step 7 for each workflow project named CallDirector_XXX and Module_XXX. After all projects have been configured with all brands, verify that all brands are present on the Brands tab of the Properties window for each CallDirector and Module project. 9. Once complete, perform a full clean up and build of the workspace (see Build the VXML Interaction Server for more information).
44
Note: To apply brand and language, see Brand and Language in the System section of the EyeQueue User Guide. Please make sure that Virtual Hold is installed before this is applied.
Change the Log Level for VXML Interaction Server on Apache Tomcat
The VXML Interaction Server provides several levels of logging:
Table 1: VXML Interaction Server Log Levels
Log Level
ERROR WARN INFO DEBUG
By default, the VXML Interaction Server writes to the log at the INFO level.
45
b. The Outbound Contact Client Setup: Installation Folder window will open.
Figure 30: Outbound Contact Client Setup window
3. Enter the path for, or browse to, the Destination Folder, and then click Next. a. The installation path cannot contain spaces. If it does, the following dialog will appear:
46
Figure 31: Outbound Contact Client Setup destination path requirement dialog
b. Click OK to acknowledge the Outbound Contact Client Setup message: The installation path cannot contain spaces. c. Eliminate any spaces in the installation path, and then click Next. 4. The following two screens of the OCC Setup consist of, first, configuring items at a generic OCC level; and, second, configuring UCCX-specific items.
Figure 32: Outbound Contact Client Setup - OCC setup
a. Enter the following on the OCC setup screen: Log Pathbrowse to the folder path for the log files. Queue Manager Hostthe name of your server. Queue Manager IPthe same IP as was entered in Virtual Hold. Note: This field uses built-in IP control to assist in correct configuration. Enter the IP address as if this were a blank field, using four decimal numbers separated by dots. Queue Manager Portthe same Port as was entered in Virtual Hold. IVR Namethe name of the IVR entered for IVR Group in the IVRServers table. Note: If Virtual Hold is already configured, then log in to EyeQueue and browse to the DBConfig page and look for the IVRServers table > get the IVR Name from the IVR Groups column. Otherwise, make note of this value and use it when you configure the IVRServers table. IVR Hostthe name of your OCC server. Note: This field is case-sensitive. Be sure to enter the exact name of the server with the proper case. Dialer Typethe type of dialer interface. Select UCCX.
47
c. Enter the following on screen two, which get passed to the UCCX trigger: Tenantthe Site Name; e.g., VHT Out Dial URLthe URL of HTTP Trigger in UCCX, where VHTOutbound is the trigger configured for the outbound script. Outbound DNa new route point to which callbacks must be redirected to attach user data before the call is sent to the agent. Note: If your UCCX environment is set up per Prepare the Cisco UCCX Environment, then you can get the Directory Number that was created as part of Create DN-Based Trigger for New Application. VIS Request URLthe URL of the VXML Interaction Server. This value is sent to UCCX so it can invoke VXML pages to provide the outbound treatment to the caller. InstallShield will display this URL: http://<VIS_IP:Port>/<VIS_VERSION>/Cisco/Outbound Replace <VIS_VERSION> with the name of the VIS .war file. Note: If VIS is not yet installed, you may manually change the UCCX.config file setting requestURL in How to Change the UCCX Specific Configuration File. Disposition URLthe URL of the VHT_OCC Disposition Web Service that UCCX will call with disposition information. For example, busy, no answer, etc. PlatformToolKit URLthe URL of the server where Virtual Hold PTK resides.
In addition to what is entered into OCC, the following parameters are passed to the UCCX outbound trigger (http://UCCXServer:Port/HTTPTrigger): INTERACTION_ID=InteractionId CALLBACK_NUMBER=DialPrefixPhoneNumberDialSuffix CBQSkill=CSQ ID (the skill where the call will be queued after customer answers) NoAnswerTimeout=55 (in seconds)
d. Click Next
48
5. Click Install. The Installing window will open, showing installation status. Note: A Microsoft Visual C++ Redistributable Setup window opens if it is needed for this installation. Select the check box indicating that you have read and accepted the license agreement to complete the installation, and then click Install. Click Finish when the redistributable has been completed installed.
Figure 34: Outbound Contact Client Setup: Installing window
a. If any part of the Outbound Contact Client has already been installed, the following dialog will appear:
Figure 35: Outbound Contact Client Setup: OCC installation folder already exists
b. Click OK to remove the existing OCC installation folder and continue with the installation. 6. When the installation has completed, the following screen will appear:
Figure 36: Outbound Contact Client Setup: Completed window
a. Click Show details to view what actions took place regarding files during the installation. When the installation completes, these details are written to a log file, OccInstall.log, in the OCC installation folder. Also, the details can be copied to the clipboard by right-clicking in the details text box, and then viewed by pasting them into text editor. See the figure below. b. Verify there are no warnings or errors.
49
7. Click Close to complete the installation. Important: Outbound IVR should either be removed, if it has been installed, or Stopped in Services. Start the VHT_Outbound_Contact_Client. When installing Virtual Hold, clear any IVR selections that may occur. Note: A Microsoft Visual C++ Redistributable Setup window opens if it is needed for this installation. Select the check box indicating that you have read and accepted the license agreement to complete the installation, and then click Install. Click Finish when the redistributable has been completed installed.
Figure 38: Microsoft Visual C++ Redistributable Setup
50
[ % outdialUrl URL of the UCCX that will provide the outbound treatment.
{outdialUrl, "http://UCCX_IP:9080/VHTOutbound"},
% outdialHTTPOptions - List of the erlang httpc module options for the request function. {outdialHTTPOptions, [ { timeout, 0}, % Timeout of actual request once it is sent
% requestUrl - URL of the VIS that will provide the outbound treatment. This value is sent to UCCX so that it can send the call there once connected. {requestUrl, "http://VIS_IP:8080/uccx_ivr/Cisco/Outbound"},
% dispositionUrl - URL of the VHT_OCC Disposition Web Service that UCCX will call with dispositions. The OCC_IP below should be replaced with the IP address of the server where OCC is installed. {dispositionUrl, "http://OCC_IP"},
% platformToolKitUrl - URL of the PlatformToolKit that UCCX will call for InteractionQueued and InteractionDequeued methods. {platformToolKitUrl, "http://PTK_IP/VHTPlatformWS-v4"},
% dispositionPath - Path for the VHT_OCC Disposition Web Service to listen for dispositions from UCCX. {dispositionPath, "/vht/occ"},
% dispositionPort - Port for the VHT_OCC Disposition Web Service to listen for dispositions from UCCX. {dispositionPort, 4153},
% dispositionTimeout - Length of time (in milliseconds) to wait for notification of a call's disposition from UCCX. {dispositionTimeout, 55000},
{tenant, "VHT"},
% outboundDN - OutboundDN where the callback is redirected from the UCCX vht_callback script. {outboundDN, "<YourOutboundDN>"},
% % Callback state machine Configuration % These values configure the callback behavior for UCCX % as opposed to another type of callback service % These are not intended to be changed. { setCallConnectedOnSuccess, true}, { callbackFailsOnDispositionTimeout, true}
% ].
52
Appendix
Appendix
The following is provided as assistance in determining where issues in using this solution may occur.
UCCX Platforms
The UCCX platform, available in three packages, is positioned for the following target users and has the capabilities listed: Unified CCX Standard (designed for entry-level users)includes the steps necessary for creating basic Unified CCX application, including IP Phone Agent (IPPA) and skill-based routing and does not include Cisco Agent Desktop (CAD). Unified CCX Enhanced (designed for enterprise-level users)includes all functions of Unified CCX Standard, plus support for priority queuing. Includes a license to enable custom Java extensions. Unified CCX Premium is required for VHT-UCCX integrations. See Business Perspective for more information about the UCCX Premium package. Customers with the Standard or Enhanced packages, who are looking to leverage Virtual Hold with UCCX, will need to upgrade their UCCX deployment to the Premium package.
Troubleshoot UCCX
In order to troubleshoot calls in UCCX, you will need to install the Real-Time Monitoring Tool from Cisco Unified CCX Administration.
52
Appendix
b. Select Trace > Configuration: In the Trace Filter Setting table, select Debugging and XDebugging1 for ENG in the MANAGERS Subfacility. Select Debugging and XDebugging1 for SS_VB in the SUBSYSTEMS Subfacility.
c. Click Save.
g. Click Finish.
View Logs
View the exported logs in a text editor. The logs can be found in the default location, C:\Program Files (x86)\Cisco\Unified Serviceability\JRtmt unless a different location is specified. To trace the script, look in the Cisco001MIVRxxx.log files. To trace any System.out logs from Java Code, look in the stdout.log files.
53
Appendix
UCCX Log Format UCCX scripts log call milestones, displaying the internal tracking ID; indicating the start and end of each script; indicating whether values have been passed into the script; and indicating when the script returns values. Call milestones will be logged as five types of statements as follows START
Dec 11 15:25:00.018 EST 2012: VHT: START |vht_inbound.aef|scriptRootDirectory = 'DEV'|tenant = 'VHT'|visUrl = 'http://10.30.0.190:8080/uccx_ivr'|csq = 'Sales_CSQ'|ptkUrl = 'http:// 10.30.0.190/VHTPlatformWS-v4/'|segment = 'NOT_SET'
END
INFO
Dec 11 15:25:01.030 EST 2012: VHT: INFO |vht_sub_get_offer_decision.aef|internalId = 133|CALLING: com.virtualhold.uccx.PTKWrapper.getOfferDecision(ptkUrl,tenant,segment)|ptkUrl = 'http://10.30.0.190/VHTPlatformWS-v4/'|tenant = 'VHT'|segment = '4008020'
Writing/Generating Logs
There are two ways to perform logging in the UCCX Editorby annotation and by creating Java code that can be uploaded to the server, and then calling that code within a script.
Figure 39: Logging sample in UCCX Editor
Annotated Logging
To use annotated logging, place the Annotate step, located under the General section of the UCCX editor, in your script. It will allow you to enter typed text into the log file. However, it will not allow you to pass variables. Example of Annotated Logging log file:
14514: Sep 14 09:28:06.513 EDT %MIVR-ENG-7-UNK:Execute step of Task 34000000010 : comment log */ /* Test
Appendix
55
Appendix
High-Level Diagrams
The following shows the high-level flow diagram of the subscripts that invoke PTK Wrapper .jar file.
Figure 40: PTKWrapper Subscripts - Java Wrappers
The following shows the high-level flow diagram of the subscript that invokes OCC Wrapper .jar file.
Figure 41: OCCWrapper Subscript - Java Wrapper
56
Appendix
The following diagrams explain the flow for the main entry points for the Inbound and Outbound Callflows.
Figure 42: Inbound and Outbound Callflow
57
Appendix
The following scripts explain the flow for getting or setting user data.
Figure 43: Subscripts - Get/Set User Data
58
Appendix
The following script explains the flow of invoking the VXML application to provide inbound treatment.
Figure 44: Inbound Treatment Script
59
Appendix
The following script explains the flow of invoking the VXML application to provide outbound treatment.
Figure 45: Outbound Treatment Script
60
Appendix
The following script explains the flow of sending queued and de-queued messages to VH platform. It is also responsible for queuing the calls to an appropriate skill.
Figure 46: Queuing Script
61