Identify CTI data

Third-party CTI fields are based on events received from the switch. You can identify the third-party CTI attributes available for use by examining the Integration Service logs.

Before you begin 

Configure the Recorder and an Integration Service adapter.

Procedure 

  1. Ensure the log Trace Level is set to DebugHigh.

    1. On the server where the Integration Service is installed, navigate to <install software dir>\ContactStore\LogManager.exe. Run the Log Manager.

    2. Select the IntegrationService component and set the Trace Level to DebugHigh.

  2. Navigate to <datadir>/logs, and then open the Integration Service log file.

  3. Locate the CTI event in question. Events from the integration target a destination of “CallTracker” within the system. These events are identified in the logs by filtering for log lines that look like the following:

    --> <CallTracker>

    If there are multiple adapters configured in the system, the source information (for example, the “si.1” field from the <si.1> --> <CallTracker> log line) can be used for additional filtering.

  4. Locate the desired data from within the message. All data within a message is held within a named Field. Each Field is tracked within either a Folder or an Array. To extract data from a Field, the entire path to that Field must be defined.

    The names of fields, folders, and arrays are case sensitive when defining a mapping.

CTI event example

The following is an example CTI event from Adapter #2 sent into the CallTracker for processing. In this case, the customer wants to extract the highlighted fields of call id and the calling party display name.

Dispatching Event CTI Event<si.2> --> <CallTracker> Size<2>

Int<AdapterId> = 2 ; Str<AdapterName> = JTAPI ; Int<SwitchId> = 304 ; Str<SwitchName> = Cisco ; Int<eventId> = 116

Str<description> = TermConnCreatedEv SEP68BDABA4568B

Folder<event>

Int<ciscoCause> = 100 ; Str<ciscoCauseStr> = CAUSE_INVALIDIECONTENTS ; Int<ciscoFeatureReason> = 12 ; Str<ciscoFeatureReasonStr> = REASON_NORMAL

Int<callId> = 16865573

Folder<ciscoCallIdentifiers>

Int<ciscoCallId> = 16865573 ; Int<ciscoCallManagerId> = 1 ; Int<ciscoGlobalCallId> = 88357

Folder<calledPartyInfo>

Str<displayName> = ; Str<unicodeDisplayName> =

Folder<callingPartyInfo>

Str<address> = 8614 ; Str<displayName> = 8614 SCCP Tier3 DMS ; Str<unicodeDisplayName> = 8614 SCCP Tier3 DMS

Folder<terminalConnection>

Int<termConnState> = 67 ; Int<callControlTermState> = 98 ; Int<connState> = 51 ; Int<callControlState> = 84 ; Str<terminalAddress> = 8614/SEP68BDABA4568B

Array<connections> [1]

[0]: Str<terminalAddress> = 8614/SEP68BDABA4568B ; Int<callControlState> = 84 ; Int<termConnState> = 67 ; Int<connState> = 51 ; Int<callControlTermState> = 98

In the CTI Event example, the following fields were identified for extraction:

  • ciscoCallId” field. Working up from the “ciscoCallId” field, we need to identify all of the folders /arrays above it. In this particular example message, the “ciscoCallId” field exists in the “ciscoCallIdentifiers” folder, which is contained within the “event” folder. There is no folder above the “event” folder in this example. In order to access this field, the mapping is “event.ciscoCallIdentifiers.ciscoCallId”.

  • unicodeDisplayName” field. Extracting the display name is done in a similar manner. The “unicodeDisplayName” field is held within a folder named “callingPartyInfo”, which is also contained within the “event” folder. To extract this name, the mapping is “event.callingPartyInfo.unicodeDisplayName”.

 

SIPREC event example

This is an example SIPREC recording event from the internal SIP Proxy sent into the CallTracker for processing. In this case, the customer wants to extract the highlighted fields of UCID and the second participant name.

Dispatching Event recording<SIPProxy> --> <CallTracker> Size<0>

Int<AdapterId> = 1 ; Str<AdapterName> = SIPREC SBC Avaya ; Int<SwitchId> = 751 ; Str<SwitchName> = SIPREC_SBC ; Str<datamode> = complete

Str<rSessionId> = 786562_54473663@xx.xx.254.70

Array<group> [1]

[0]: Str<group_id> = OGM3MTkzMDAtMThiNy0xMA== ; Str<associate-time> = 2017-05-11T20:37:18Z

[0]: Folder<callData>

[0]: Str<fromhdr> = sip:+114045555678@xx.xx.138.36:5060;user=phone ; Str<callid> = 1258564145_113685498@xx.xx.135.12 ; Str<gcid> = 786562

[0]: Str<tohdr> = "UUID-00FA080045C69E5914CB7E" <sip:+18885551234@xx.xx.135.71;user=phone>;tag=gK0c80b638

Array<session> [1]

[0]: Str<session_id> = OGM3MTkzMDEtMThiNy0xMA== ; Str<group-ref> = OGM3MTkzMDAtMThiNy0xMA== ; Str<start-time> = 2017-05-11T20:37:18Z

[0]: Str<avayaUCID> = 00FA080045C69E5914CB7E

Array<participant> [2]

[0]: Str<participant_id> = OGM3MTkzMDItMThiNy0xMA==

[0]: Folder<nameID>

[0]:   Str<aor> = +18885551234@xx.xx.138.36:5060

[0]: Folder<name>

[0]:   Str<lang> = en

[1]: Str<participant_id> = OGM3MTkzMDMtMThiNy0xMA==

[1]: Folder<nameID>

[1]:   Str<aor> = +14045555678@xx.xx.135.71

[1]: Folder<name>

[1]:   Str<lang> = en

Array<stream> [2]

[0]: Str<stream_id> = OGM3MTkzMDQtMThiNy0xMA== ; Str<session_id> = OGM3MTkzMDEtMThiNy0xMA== ; Str<associate-time> = 2017-05-11T20:37:18Z

[0]: Array<label> [1]

[0]: [0]: Str<label> = 1

[1]: Str<stream_id> = OGM3MTkzMDUtMThiNy0xMA== ; Str<session_id> = OGM3MTkzMDEtMThiNy0xMA== ; Str<associate-time> = 2017-05-11T20:37:18Z

[1]: Array<label> [1]

[1]: [0]: Str<label> = 2

In the SIPREC event example, the following fields were identified for extraction:

  • avayaUCID” field. Working up from the “avayaUCID” field, we need to identify all of the folders /arrays above it. In this particular example message, the “avayaUCID” field exists in the “session” array. There is no folder above the “session” array in this example. The formatting of the Array tells us there is one (1) entry in the array (i.e. “Array<session> [1]”) and the desired field is in the zeroth index Repository of transcribed interactions, which are used for analysis in Speech Analytics. of the array (i.e. “[0]: Str<avayaUCID>”). In order to access this field, the mapping would be “session(0).avayaUCID”.

  • aor” field. Extracting the display name is done in a similar manner. The “aor” field is held within a folder named “nameID”, which is contained within a different array named “participant”. To extract this name, the mapping is “participant(1).nameID.aor”.

CTI tagging

Create Custom Data fields

Map Custom Data to an attribute

Map attributes to an adapter