Courtesy Callback: Capabilities
Courtesy Callback: Capabilities
• Capabilities , page 1
• Initial Setup , page 3
• Administration and Usage, page 20
Capabilities
Courtesy Callback reduces the time callers have to physically wait on hold or in a queue. The feature enables
your system to offer callers (who meet your criteria) the option to receive a courtesy callback by the system
instead of waiting on the phone for an agent. The caller who has been queued by Unified CVP can hang up
and subsequently be called back when an agent is close to becoming available (preemptive callback).
Preemptive callback does not change the time a customer must wait to be connected to an agent, but rather
enables the caller to hang up and not be required to remain in queue listening to music. Callers who have
remained in queue or have undergone the callback treatment appears the same to agents answering the call.
If the caller decides to be called back by the system, they leave their name and phone number. Their request
remains in the system and when the system determines that an agent will be available soon (or is available),
then the system places a call back to the caller. The caller answers the call and confirms that they are the
original caller and the system connects the caller to the agent after a brief wait.
In the event that the caller cannot be reached after a configurable max number and frequency of retries, the
callback is aborted and the database status is updated appropriately. You can run reports to determine if any
manual callbacks are necessary based on your business rules.
Note that you cannot schedule a callback for a specific time.
Note There are a number of prerequisites and design considerations for using this feature. See the Cisco Unified
Customer Voice Portal Release Solution Reference Network Design (SRND) guide.
Note The Cisco Unified Customer Voice Portal Release Solution Reference Network Design (SRND) guide
also describes how the system determines customer wait time and when to call the customer for the
callback.
Callback Criteria
In your callback script, you can establish criteria for offering a caller a courtesy callback. Examples of callback
criteria include:
• Number of minutes a customer is expected to be waiting in queue that exceeds a maximum number of
minutes (based on your average call handling time per customer)
Note The included example scripts use this method for determining callback eligibility.
• Assigned status of a customer (gold customers may be offered the opportunity to be called back instead
of remaining on the line)
• The service a customer has requested (sales calls, or system upgrades, for example, may be established
as callback criteria)
Related Topics
CCE Script for Courtesy Callback, on page 15
5 If the caller chooses to receive a callback, the system prompts the caller to record their name and to key
in their phone number.
6 The system writes a database record to log the callback information.
Note If the database is not accessible, then the caller is not offered a callback and they are placed in queue.
7 The caller is disconnected from the TDM side of the call. However, the IP side of the call in Unified CVP
and Packaged CCEis still active. This keeps the call in the same queue position. No queue music is played,
so Voice XML gateway resources used during this time are less than if the caller had actually been in
queue.
8 When an agent in the service/skill category the caller is waiting for is close to being available (as determined
by your callback scripts), then the system calls the person back. The recorded name is announced when
the callback is made to insure the correct person accepts the call.
9 The system asks the caller, through an IVR session, to confirm that they are the person who was waiting
for the call and that they are ready for the callback.
If the system cannot reach the callback number provided by the caller (for example, the line is busy, RNA,
network problems, etc.) or if the caller do not confirm they are the caller, then the call is not sent to an
agent. The agent is always guaranteed that someone is there waiting when they take the call. The system
assumes that the caller is already on the line by the time the agent gets the call.
This feature is called preemptive callback as the system assumes that the caller is already on the line by
the time the agent gets the call and that the caller has to wait minimal time in queue before speaking to an
agent.
10 The system presents the call context on the agent screen-pop, as normal.
In the event that the caller cannot be reached after a configurable maximum number and frequency of retries,
the callback is aborted and the database status is updated appropriately. You can run reports to determine if
any manual callbacks are necessary based on your business rules.
See the Configuration Guide for Cisco Unified Customer Voice Portal at http://www.cisco.com/en/US/products/
sw/custcosw/ps1006/products_installation_and_configuration_guides_list.html that explains a call flow
description of the function of the scripts providing the Courtesy Callback feature.
Initial Setup
The Courtesy Callback feature must be configured on the following servers/gateways:
• Ingress Gateway (IOS configuration)
• VXML Gateway (IOS configuration)
• Reporting Server (through the Unified CVP Operations Console)
• Media Server (upload of Courtesy Callback media files)
• Unified CVP VXML Server (upload of Call Studio Scripts)
• Packaged CCE
Note In Courtesy Callback, outbound calls cannot be made using any other egress gateway.
• Calls that allow Callbacks must be queued using a Unified CVP VXML Server.
• The Unified CVP Reporting Server must be installed and licensed.
• Answering machine detection is not available for this feature. During the callback, the best that can be
done is to prompt the caller with a brief IVR session and acknowledge with DTMF that they are ready
to take the call.
• Calls that are transferred to agents using DTMF *8, TBCT, or hookflash cannot use the Courtesy Callback
feature.
• Callbacks are a best-effort mechanism. After a limited number of attempts to reach a caller during a
callback, the callback is terminated and marked as failed.
• Customers must configure the allowed/blocked numbers that Callback is allowed to place calls through
the CVP Operations Console.
• Media inactivity detection feature on the VXML Gateway can impact waiting callback calls. For more
information, see the Configuration Guide for Cisco Unified Customer Voice Portal (CVP).
For more information on the gateway type, models, and IOS versions supported, see the Packaged CCE Design
Guide.
Procedure
Step 1 Login to the CVP OAMP Operations Console (from the CVP OAMP VM), using this syntax:
https://<server_ip>:9443/oamp.
Step 2 Copy survivability.tcl from the Operations Console to the flash memory of the gateway. Using the Operations
Console, perform the following:
a) Select: Bulk Administration > File Transfer > Scripts and Media.
b) In Device Association, for Select Device Type select: Gateway.
If you are updating the survivability service, or if this is the first time you created the survivability service,
remember to load the application using the command:
call application voice load cvp-survivability
Step 7 Create the incoming dial peer, or verify that the survivability service is being used on your incoming dial peer.
For example:
dial-peer voice 978555 pots
service cvp-survivability
incoming called-number 9785551234
direct-inward-dial
!
Note: We support both POTS and VoIP dial peers that point to a service provider.
Step 8 Create outgoing dial peers for the callbacks. These are the dial peers that place the actual call back out to the
PSTN. For example:
destination-pattern 978554....
no digit-strip
port 0/0/1:23
!
Step 9 Use the following configuration to ensure that SIP is set up to forward SIP INFO messaging:
Procedure
Step 1 Copy cvp_ccb_vxml.tcl from the CVP OAMP Operations Console to the flash memory of the gateway. Using
the Operations Console:
a) Select: Bulk Administration > File Transfer > Scripts and Media.
b) In Device Association, for Select Device Type select: Gateway.
c) From the default gateway files, highlight: cvp_ccb_vxml.tcl.
d) Click Transfer.
Step 2 In order to add services to the gateway, you need to be in enabled-config application mode. Type these
commands at the gateway console:
GW81#en
GW81#config
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
GW81(config)#application
GW81(config-app)#
Note The media-inactivity detection feature must be turned off in the VXML Gateway to successfully
callback the caller. With media-inactivity enabled on the VXML Gateway, the cvp_cc service will
disconnect the waiting callback calls after 'ip rtcp report interval' * 1000 milliseconds interval. This
configuration becomes important in a co-located Ingress/VXML setup where media inactivity timers
are always enabled. In such scenarios, the 'ip rtcp report interval' has to be increased to support the
maximum allowable waiting for a callback call as defined by the solution requirements.
Step 4 On the VoIP dial-peer that defines the VRU leg from Packaged CCE, verify that the codec can be used for
recording. The following example shows that g711ulaw can be used for recording in Courtesy Callback:
In other words, this example shows the g711ulaw codec set on the 123 voip dial-peer. Note that the codec
must be specified explicitly. A codec class cannot be used because recording will not work.
Step 5 Use the following configuration to ensure that SIP is setup to forward SIP INFO messaging:
Step 6 VXML 2.0 is required to play the beep to prompt the caller to record their name in the BillingQueue example
script. Add the following text to the configuration so the VXML Server uses VXML 2.0:
Note Whenever vxml version 2.0 is enabled on the gateway,vxml audioerror is off by default. When an
audio file cannot be played, error.badfetch will not generate an audio error event. To have the gateway
generate an error.badfetch event when a file cannot be played, enable vxml audioerror in your gateway
configuration. The following example uses config terminal mode to add both commands:
config t
vxml version 2.0
vxml audioerror
exit
For instructions, see the Cisco Packaged Contact Center Enterprise Installation and Configuration Guide.
Once you have added the Reporting Server, configure the Reporting Server for courtesy callback using the
following procedure:
Procedure
Step 1 Login to the CVP Operations Console, using this syntax: https://<server_ip>:9443/oamp.
Step 2 In the Operations Console, select System > Courtesy Callback. The Courtesy Callback Configuration
page opens.
From this window, on the General tab you can:
• Select the Reporting Server for Courtesy Callback
• Enable secure communication with the Courtesy Callback database
• Configure allowed and disallowed dialed numbers
Step 3 On the Courtesy Callback Configuration page, select the Unified CVP Reporting Server drop-down list,
and select the Reporting Server to use for storing Courtesy Callback data.
Note If you do not have a Reporting Server configured, refer to the notes at the beginning of this procedure
to configure one.
Step 4 If desired, enable secure communication with the callback reporting database. Check Enable secure
communication with the Courtesy Callback database.
Step 5 Configure allowed and denied dialed numbers. These are the numbers that the system should and should not
call when it is making a courtesy callback to a caller. Also configure the Maximum Number of Calls Per
Calling Number.
Use the following table to configure these fields:
Field Description Default
Allow This checkbox controls whether or not dialed numbers that do Unchecked - Callbacks can
Unmatched not exist in the Allowed Dialed Numbers field can be used for only be sent to dialed
Dialed a callback. numbers listed in the
Numbers By default, this is unchecked. If no dialed numbers are present Allowed Dialed Numbers
in the Allowed Dialed Numbers list box, then Courtesy Callback list.
does not allow any callbacks.
Allowed The list of allowed dialed numbers to which callbacks can be Empty - If Allow
Dialed sent. You can use dialed number patterns, for example 978> Unmatched Dialed
Numbers allows callbacks to all phone numbers in the area code 978. Numbers is not checked, and
this list remained empty, then
To Add/Remove Dialed Numbers:
no callbacks can be made.
• To Add a number to the list of allowed dialed numbers -
Enter the dialed number pattern in the Dialed Number
(DN): field and click Add.
• To remove a number from the list - Highlight the number
and click Remove.
Step 6 Click the Call Server Deployment tab and move all four CVP Call Servers from the Available box to the
Selected box.
Step 7 Click Save & Deploy to deploy the new Reporting Server configuration immediately.
If you click Save, the configuration is saved and becomes active (is deployed) the next time the Reporting
Server restarts.
Note If you selected the Media File installation option, during the Unified CVP install, the audio files were
unzipped and copied to C:\inetpub\wwwroot\en-us\app on the installation server.
Note CCBAudioFiles.zip also contains media files for Say It Smart. During installation, these files are copied
to C:\inetpub\wwwroot\en-us\sys. Copy these files to your media server, if you do not have
them there already.
Note The sample scripts are set up to use the default location of http://<server>:<port>/en-us/app
for the audio files. Later in this configuration process you will change the <server> and <port> parameters
in the default location of the audio files in the example scripts to be your media server IP address and port
number.
Procedure
Step 1 Extract the example Call Studio Courtesy Callback scripts contained in CourtesyCallbackStudioScripts.zip
to a folder of your choice on the computer running Call Studio.
You can access the .zip file from the following two locations:
• From the Unified CVP install media in \CVP\Downloads and Samples\Studio
Samples\CourtesyCallbackStudioScripts
• From the Operations Console server in %CVP_HOME%\OPSConsoleServer\StudioDownloads.
Step 2 Each folder contains a Call Studio project having the same name as the folder. The five individual projects
comprise the Courtesy Callback feature.
Do not modify the following scripts:
• CallbackEngine: Keeps the VoIP leg of the call alive when the caller elects to receive the callback (and
hangs up) and when the caller actually receives the callback. Do not modify this script.
• CallbackQueue: Handles the keepalive mechanism for the call when callers are in queue and listening
to the music played by BillingQueue.
Step 8 Update the Default Audio Path URI field in Call Studio to contain the IP address and port value for your
media server.
For each of the Call Studio projects previously unzipped, complete the following steps:
a) Select the project in the Navigator window of Call Studio.
b) Click Project > Properties > Call Studio > Audio Settings.
c) On the Audio Settings window, modify the Default Audio Path URI field by supplying your server IP
address and port number for the <Server> and <Port> placeholders.
Step 10 Callback Entry Project: If desired, in the CallbackEntry project, modify the caller interaction settings in the
SetQueueDefaults node.
This step defines values for the default queue. You can insert multiple SetQueueDefaults elements here for
each queue name, if it is necessary to customize configuration values for a particular queue. If you do not
have a SetQueueDefaults element for a given queue, the configuration values in the default queue are used.
Note You can define a Callback_Set_Queue_Defaults node with Queue Name parameter set to default.
Configuration defined in this default node will be picked whenever a queue type is encountered for
which there are no explicitly defined values.
a) In the Call Studio Navigator panel, open the CallBackEntry project and double click app.callflow to
display the application elements in the script window.
b) Open the Start of Call page of the script using the tab at the bottom of the script display window.
c) Select the SetQueueDefaults node.
d) In the Element Configuration panel, select the Setting tab and modify the following default settings as
desired:
For the SetQueueDefaults element, the caller interaction values in the Start of Call and the Wants Callback
elements, may be edited.
By default, Call Studio saves the path string in your VXML Server audio folder. If you are using the default
path, you can create a new folder called recordings in the
%CVP_HOME%\VXMLServer\Tomcat\webapps\CVP\audio\ folder on the VXML Server. If you
are using IIS as your media server, create a new folder called recordings under
C:\Inetpub\wwwroot\en-us\app and set that as the path for recordings.
This setting references the URL of the recordings folder, whereas the Path setting references the file system
path.
The AddCallback element setting in the CallbackEntry project is configured to do automatic recorded file
deletions. If automatic recorded file deletion is not desired, then remove the value of the Recorded name path
setting in the AddCallback element. This removal action assumes that you will be doing the deletion or
management of the recorded file yourself.
Step 13 In the CallbackEntry project on the Callback_Set_Queue_Defaults node, be sure the keepalive value (in
seconds) is greater than the length of the queue music being played. The default is 120 seconds.
Step 14 Save the CallbackEntry project.
Step 15 CallbackWait Project: Modifying values in the CallbackWait application.
In this application, you can change the IVR interaction that the caller receives at the time of the actual callback.
The caller interaction elements in CallbackWait > AskIfCallerReady (page) may be modified. Save the
project after you modify it. The WaitLoop retry count can also be modified from the default of six retries in
the Check Retry element. This will allow a larger window of time to pass before the call is dropped from the
application. It is used in a failure scenario when the CallbackServlet on the reporting server cannot be reached.
For instance, in a reboot or a service restart, this allows more time for the reporting server to reload the entry
from the database when it is initializing. If the reporting server is not online within the retry window, then
the entry will not be called back.
Step 16 Validate each of the five projects associated with the Courtesy Callback feature by right-clicking each Courtesy
Callback project in the Navigator window and selecting Validate.
Procedure
Step 1 After validating and saving your applications, in the navigator panel of Call Studio (top left), right-click and
select all the applications you want to deploy.
Step 2 Click Deploy.
Step 3 In the Deploy Destination area, select Archive File and click Browse.
Step 4 Navigate to the archive folder that you have set up; for example,
C:\Users\Administrator\Desktop\Sample.
Step 5 Enter the name of the file; for example, Samplefile.zip.
Step 6 Click Save.
Step 7 In the Deploy Destination area, click Finish.
Step 8 Log in to the CVP OAMP server and navigate to Bulk Administration\File Transfer\VXML Applications.
Step 9 Select the VXML Server to which you want to deploy the applications.
Step 10 Select the zip file that contains the applications; for example, Samplefile.zip.
Step 11 Click Transfer.
Procedure
Step 1 Right click each of the projects and click Deploy, then click Finish. This deploys them to your VXML
server(s).
Step 2 On your VXML server, using Windows Explorer, navigate to the %CVP_HOME%\VXMLServer\admin
folder.
Step 3 Deploy all new apps by double clicking on deployAllNewApps.bat file located in admin directory.
Step 4 Verify that all the applications are running by navigating to%CVP_HOME%\VXMLServer\admin and
double-clicking status.bat. All five applications should be listed under Application Name, and the status
for each one should be Running.
Note In the example below, the yellow comment blocks describe first the value being set and then the place
where the value is being sent.
The following bullets provide descriptions for the numbered blocks in the preceding graphic:
• Block 1: Enable callback or shut it off.
• Block 2: Compute average wait time. Once the caller is in queue, calculate the Estimated Wait Time
(EWT) for that queue and place the value in ToExtVXML[0].
If there is poor statistical sampling because of sparse queues and the wait time cannot be calculated in
the VXML Server, use the ICM-calculated estimated wait time.
One method of calculating EWT (the method used in this example) is:
ValidValue(((SkillGroup.%1%.RouterCallsQNow+1)
*
(ValidValue(SkillGroup.%1%.AvgHandledCallsTimeTo5,20))
/max(
SkillGroup.%1%.Ready,
(SkillGroup.%1%.TalkingIn
+
SkillGroup.%1%.TalkingOut
+
SkillGroup.%1%.TalkingOther))
),100)
Modify this method if you are looking at multiple skill groups (when queuing to multiple skills).
• Block 3: Set up parameters to be passed.
• Block 4: Run this block and prompt the caller. If the caller does not accept the offer for a callback, keep
the caller in the queue and provide queue music.
• Block 5: Set up variables. Call flow returns to this block if the caller elects to receive a callback.
Otherwise, the call remains queuing in the queuing application (BillingQueue in this example) on the
VXML Server.
• Block 6: Run external to Callback engine to keep the call alive. If the agent becomes available and there
is no caller, then agent can't interrupt (do not want an agent to pick up and have no one there).
• Block 7: Has the caller rejected the callback call? If no, then go to block 8.
• Block 8: Compute average wait time, as in block 2.
• Block 9: Set up variables.
• Block 10: Put caller briefly into queue (after caller accepts the actual callback call).
• CCBAudioFiles.zip, in the CCBDownloads subfolder, contains sample audio files that accompany
the sample studio scripts.
3 Assign a unique name to each unique resource pool. In the above example, we can use names ABC and
ACD as example names.
4 For each resource pool, decide whether callbacks will be allowed in that resource pool. If yes, then every
occurrence of that resource pool in all ICM scripts must be set up to use VXML Server for queuing. This
is to ensure that the Courtesy Callback mechanism in the VXML Server gets a full, accurate picture of
each resource pool's queue.
5 For any queue point where Courtesy Callback will be offered, modify all CCE scripts that contain this
queue point according to the guidelines in the following CCE script examples.
Procedure
Step 1 Copy the CCE example script, CourtesyCallback.ICMS to the CCE Admin Workstation.
The example CCE script is available in the following locations:
• On the CVP install media in \CVP\Downloads and Samples\.
Step 5 Map the route and skill group to the route and skill group available for courtesy callback.
a) In Script Editor, select File > Import Script....
b) In the script location dialog, select the CourtesyCallback.ICMS script and click Open.
c) In the Import Script - Manual Object Mapping window, map the route and skill group to the route and
skill group available for courtesy callback (identified previously).
In Packaged CCE deployment, the route tool does not exist. Routes have one-on-one mappings with skill
groups, so when you create a skill group, a route will be created with the same name.
Step 6 Block #2: If you wish to use a different estimated wait time (EWT), modify the calculation in block #2; you
will need to do this if you use a different method for calculating EWT or if you are queuing to multiple skill
groups.
Step 7 Block #3: Set up the parameters that will be passed to CallbackEntry (VXML application).
Note This step assumes you have already configured the CCE and expanded call variables not related to
Courtesy Callback.
Variable values specific to Courtesy callback include:
ToExtVXML[0] = concatenate("application=CallbackEntry",";ewt=",Call.user.microapp.ToExtVXML[0])
ToExtVXML[1] = "qname=billing";
ToExtVXML[2] = "queueapp=BillingQueue;"
ToExtVXML[3] = concatenate("ani=",Call.CallingLineID,";");
Definitions related to these variables are:
• CallbackEntry is the name of the VXML Server application that will be executed.
• ewt is calculated in Block #2 .
• qname is the name of the VXML Server queue into which the call will be placed. There must be a unique
qname for each unique resource pool queue.
• queueapp is the name of the VXML Server queuing application that will be executed for this queue.
• ani is the caller's calling Line Identifier.
Step 8 Verify that you have at least one available skill group to map to the skill group in the example script.
Step 9 Save the script, then associate the call type and schedule the script. For information about scheduling scripts,
refer to the "Schedule Routing Script" section in the Packaged CCE Administration Guide.
Procedure
To view the deployment status of Courtesy Callback configurations:
Procedure
Callback_Add
The Callback_Add element is used to add a callback object to the database after all the callback information
has been collected from the caller. In addition, it can be optionally configured to automatically delete old
recorded files at specified intervals. These recorded files are the files produced by the Record element when
the user records his/her name if they want a call back in the CallbackEntry application.
Callback_Disconnect_Caller
The Callback_Disconnect_Caller element is responsible for disconnecting the caller’s leg of the call. The
IP leg of the call for Unified CVP is preserved to hold the caller’s place in line until the callback is made
back to the caller.
Callback_Enter_Queue
The Callback_Enter_Queue element is responsible for adding a new caller to queue. This element must be
executed for all callers even if the caller may not be offered a callback.
Callback_Get_Status
The Callback_Get_Status element is responsible for retrieving all information about the callback related
to the current call (if a callback exists).
Callback_Reconnect
The Callback_Reconnect element is responsible for reconnecting the caller’s leg of the call.
Callback_Set_Queue_Defaults
The Callback_Set_Queue_Defaults element is responsible for updating the DBServlet with the values that
should be used for each queue. There is always a default queue type. The values are used whenever a queue
type is encountered for which there are no explicitly defined values. For example, if an administrator has
defined values for a billing and default queues, but the caller is queued for mortgages. In that case, the
application uses the values from Callback_Set_Queue_Defaults.
Callback_Update_Status
The Callback_Update_Status element is responsible for updating the database after a callback disconnect
or reconnect.
Callback_Validate
The Callback_Validate element is responsible for verifying whether or not a callback can be offered to
the caller during this call. Depending on the outcome of the validation, the Validate element exits with one
of four states.
Callback_Wait
The Callback_Wait element is responsible for sleeping the application for X seconds. The application hands
control back to cvp_ccb_vxml.tcl with the parameter wait=X.