Cisco Cisco Computer Telephony Integration Option 9.0 开发者指南
10-2
CTI OS Developer’s Guide for Cisco Unified ICM/Contact Center Enterprise & Hosted
Release 8.0(1)
Chapter 10 Call Object
Accessing ECC Variables
Accessing ECC Variables
The Unified ICM provides a customer-defined data layout for sending call context data with a call. This
mechanism is called Expanded Call Context, or ECC. ECC variables are defined in the Unified ICM
Configuration Manager, and are sent between Unified ICM servers as a key-value structure. The
mechanism for accessing ECC variables from CTI OS is similar to accessing all other call variables.
mechanism is called Expanded Call Context, or ECC. ECC variables are defined in the Unified ICM
Configuration Manager, and are sent between Unified ICM servers as a key-value structure. The
mechanism for accessing ECC variables from CTI OS is similar to accessing all other call variables.
To simplify the organization of properties on the Call object, the ECC variables are stored in their own
Arguments structure which is nested in the Call object Arguments structure.
Arguments structure which is nested in the Call object Arguments structure.
Considerations for Passing Call Variables
•
A consultative transfer is one in which the transferring or forwarding party either connects the caller
to a ringing phone or speaks with the third party before connecting the caller to the third party. In a
consultative transfer on the same peripheral gateway, if a variable is updated with data during the
primary call, and the same variable is then updated with data during the transferred call, the call data
from the initial call takes precedence and replaces the call data from the transferred call.
to a ringing phone or speaks with the third party before connecting the caller to the third party. In a
consultative transfer on the same peripheral gateway, if a variable is updated with data during the
primary call, and the same variable is then updated with data during the transferred call, the call data
from the initial call takes precedence and replaces the call data from the transferred call.
•
For calls that are transferred between peripheral gateways, update call variables on the primary call
before transferring the call. Only call variable information from the primary call is included in the
route request to the other peripheral gateway. Any call variable information that you change after
the call is transferred is lost because the call variable information was not included in the route
request when the call was transferred.
before transferring the call. Only call variable information from the primary call is included in the
route request to the other peripheral gateway. Any call variable information that you change after
the call is transferred is lost because the call variable information was not included in the route
request when the call was transferred.
•
The Unified ICM call control variable map is a string that describes the mappings of a peripheral’s
call control variables to Unified ICM call control variables. You can edit this string to identify the
call variables that an agent can change.
call control variables to Unified ICM call control variables. You can edit this string to identify the
call variables that an agent can change.
Retrieving ECC Variable Values
To retrieve an ECC variable from the Call object, first retrieve the ECC (Arguments) structure from the
Call object using GetValueArray with keyword ECC. Then, retrieve the specific ECC variable required
by using its name as the keyword to GetValueInt, GetValueArray, or GetValueString, depending on its
type. The following is some sample code for C++ without COM:
Call object using GetValueArray with keyword ECC. Then, retrieve the specific ECC variable required
by using its name as the keyword to GetValueInt, GetValueArray, or GetValueString, depending on its
type. The following is some sample code for C++ without COM:
Arguments * pECCData = NULL;
string sMyECCVariable;
int nMyECCArrayVariable;
if (pCall->IsValid(CTIOS_ECC))
{
pCall->GetValueArray(CTIOS_ECC, &pECCData);
if (pECCData)
{
if (pECCData->IsValid("user.MyECC"))
pECCData->GetValueString->("user.MyECC", &sMyECCVariable);
if(pECCData->IsValid("user.MyArray[2]"))
pECCData->GetValueInt("user.MyArray[2]", &nMyECCArrayVariable);
pECCData->Release();
pECCData = NULL;
}
}