Call Flagging

Call flagging is the process of attaching data to a QMS call recording. The data takes the form of a flag name and an associated flag value. While QMS supports dynamic flag values and pre-defined flag values, the Connector supports only dynamic values. For flagging to occur, the Connector must determine several pieces of information: the user, the flag name and value, and the RecordingId of the recording to which the flag will be attached.

The Connector’s flagging process involves the following steps:

  1. For a given event, can an event parameter be used to map the event to a QMS user?

  2. If a user is identified, is an event parameter mapped as a flag source?

  3. If a flag source parameter is identified, is its value valid?

  4. If the value is valid, the flag is cached, tracked by user and call ID.

  5. Steps 2 to 4 are repeated to support multiple flags sourced from a single event type.

  6. When an Established event is received for the user and call ID, the Connector queries the associated Recording Service for the RecordingId of the user’s current recording. The Connector then sends a SetCallInfo command passing the RecordingId, along with the cached flags, to the Recording Service.

A value that arrives before any user can be identified (on UCCX, the CTI port’s leg of an ACD call) is held against the call and moved to the user once identified. A value that arrives after the Established event, such as CallWrapupData entered after the agent hangs up, is attached to the recording as it arrives, until the call ends.

The CTI server events that may trigger call flags are:

  • AGENT_PRE_CALL_EVENT (UCCE only)

  • BEGIN_CALL_EVENT

  • CALL_DATA_UPDATE_EVENT

  • CALL_DELIVERED_EVENT

  • CALL_ESTABLISHED_EVENT

Because the Connector attaches the flags while processing the Established event, the triggering events are typically received before the call enters the connected state.

On UCCX, AGENT_PRE_CALL_EVENT is not sent. An ACD call is answered on a CTI port and then delivered to the agent. The agent leg’s CALL_DELIVERED_EVENT carries the agent’s extension together with the call variables and ECC variables, and a later CALL_DATA_UPDATE_EVENT carries CallWrapupData.

Mapping events to users

To support step 1 above, the CiscoUCCEConnectorService.EventToUserMap app setting maps an event to a QMS user. The setting can include one or more comma-delimited mapping rules of the form [EventName].[EventParameterName].[UserMappingDataType], where UserMappingDataType is either Extension or AgentId. For example, the following setting:

<add key="CiscoUCCEConnectorService.EventToUserMap" value="AGENT_PRE_CALL_EVENT.AgentInstrument.Extension,BEGIN_CALL_EVENT.DNIS.Extension"/>

includes two user mapping rules:

  • When processing an AGENT_PRE_CALL_EVENT, the user list is searched for an entry whose extension matches the value of the AgentInstrument parameter.

  • When processing a BEGIN_CALL_EVENT, the user list is searched for an entry whose extension matches the value of the DNIS parameter.

When EventToUserMap is absent or empty, the Connector applies a default for the product:

Product Default rules

UCCX

CALL_DELIVERED_EVENT.ConnectionDeviceID.Extension, CALL_DATA_UPDATE_EVENT.ConnectionDeviceID.Extension, CALL_ESTABLISHED_EVENT.ConnectionDeviceID.Extension

UCCE

AGENT_PRE_CALL_EVENT.AgentInstrument.Extension, BEGIN_CALL_EVENT.DNIS.Extension, BEGIN_CALL_EVENT.ConnectionDeviceID.Extension, CALL_ESTABLISHED_EVENT.ConnectionDeviceID.Extension

A configured EventToUserMap is always kept, including when the Connector adopts a product from QMS. On UCCX, the UCCE rules find no user on the events that carry flag values, so calls get no flags. Configurations written before UCCX support set the UCCE rules explicitly. The Connector warns at startup when the configured rules are exactly the other product’s default, and when it adopts a product from QMS and keeps a configured map. Remove the setting, or clear it (value=""), to use the product’s default; choosing the product in the Configuration Tool does this for a map that is exactly the previous product’s default.

A device ID of the form Primary.Actual, used from protocol version 14, is matched on its actual part.

Mapping events to trigger flags

To support step 2 above, the CiscoUCCEConnectorService.FlagTrigger app setting maps an event to a potential flag value. The setting can include one or more comma-delimited mapping rules of the form [EventName].[EventParameterName].[SystemFlagName]. For example, the following setting:

<add key="CiscoUCCEConnectorService.FlagTrigger" value="AGENT_PRE_CALL_EVENT.CallVariable3.VAR3,BEGIN_CALL_EVENT.CallVariable3.VAR3" />

includes two flag mapping entries:

  • When processing an AGENT_PRE_CALL_EVENT, if the event parameter CallVariable3 is present and its value is valid, the Connector attaches the value to the active recording as a flag named VAR3.

  • When processing a BEGIN_CALL_EVENT, if the event parameter CallVariable3 is present and its value is valid, the Connector attaches the value to the active recording as a flag named VAR3.

The SystemFlagName portion of a flag mapping rule must match the name of a system flag; if no match is found, the rule is discarded.

The FlagTrigger rules are a fallback. They apply only while QMS has no trigger rules configured (see Trigger Rules Configured in QMS). Once any rule exists in QMS, the Connector applies the QMS rules only, and logs a warning naming each FlagTrigger rule that no longer applies. On an existing installation, re-enter the FlagTrigger rules in QMS before adding the first new one there.