Skip to main content
Skip table of contents

v1.0 - Reporting

To add to this section:

  • Reporting APIs

  • Data you should expect to see (by API)

  • How to interpret your data

Introduction

Reporting in OCM takes a couple of primary forms. Whilst there are some limited campaign metrics available in the “Campaigns” interface, we have designed the dialler to output data streams at certain points in time. This data is available as automated reporting output being pushed from our system to yours. This section covers the in-built UI metrics, as well as the exported data options.

UI Metrics

As mentioned in the “Campaigns” section of this document, there are two primary metrics which we report on - Records Available now (1) and Total Available Records (2).

These metrics are only available in the Campaigns interface.

Below is a definition of each metric:

Records Available Now:

A metric displaying all records available right now to dial. Records included in this metric conform to the following logic

  1. If a campaign is subject to an event closure, this metric will show 0 records

  2. Operating hours will not affect the number of records available now

  3. Records excluded by zoneset dialling times will not appear in this metric

  4. Any record available right now (ie, the recall or callback time has passed), whilst conforming to the above rules, will appear in this metric

  5. Records filtered out via a filter statement will not appear in this metric

  6. Records inserted with an orphaned zone (ie, a zone not assigned to the campaign zoneset) will not appear in this metric

Total Active Records:

A count of the total records in a campaign list with a status of “Active”.

  1. Event closures, Operating Hours, and zoneset dialling times will not affect this metric

  2. Filtered records will be included in this metric

  3. Orphaned zones will be included in this metric

Use Cases

The purpose of these real time metrics is to provide Dialler Admins/Analysts the most important insights they will need to be able to make decisions for the dialler. For example:

  • A dialler analyst wants to know how many records they would have if they started a campaign early (ie, changed operating hours)

    • Use Records Available Now

  • A dialler analyst wants to understand the workload now, subject to zones and filters

    • Use Records Available Now

  • A dialler analyst wants to check the import status of records for orphaned zone records

    • Use Records Available Now in conjunction with reporting available via your lead source

  • A dialler analyst needs to understand whether or not it’s a good time to recycle records, due to record depletion

    • Use Records Available Now in conjunction with Total Active records to check what the potential workload addition could be

  • A dialler analyst needs a quick view of records in the system but not available now

    • Use Records Available Now in conjunction with Total Active records to check what the potential workload addition could be

The included real time metrics will provide useful tactical data inputs for the management of your dialler, however they will not provide more in depth analysis capabilities (for example, attempt rates, conversion rates, connect rate analysis, best time to dial etc). Instead, OCM provides detailed data outputs, by record, for each attempt which is made in a campaign. We also provide data on the changes to campaign configuration and record updates.

Exported Data

VoiceFoundry will automatically export data from the dialler in certain circumstances, which can be ingested by a receiving system (ie, data warehouse, distributed streaming platform, reporting system etc). The metrics and data points you can obtain from the data are listed below:

Note: Fields which are coloured denote that the field belongs to an object in the data returning from the dialler.

Record Attempt Data

At the conclusion of each attempt, for every record which is dialled, an output is generated in real time. This output contains important information about the specified attempt. The data points exported are listed and described below:

Field Name

Data Type

Description

crmId

String

The customers crmId (e.g. Salesforce Id)

recordId

String

The unique record Id generated by the dialler for this record

externalRecordId

NULL/String

The external unique Id (if required). If supplied must be unique within the dialler records.

campaignName

String

Name of the campaign as assigned by the dialler admin

campaignId

String

Unique Id of the campaign generated by the dialler

attemptsSequence

Integer

Dial attempts sequence number. This increments with each actual dial attempt

attemptsRemaining

Integer

A point in time indication of attempts remaining. This can be changed by record updates

active

Boolean

A flag indicating that this record is still active (available for dialling) or is inactive

initiatedTime

String

An ISO datetime string indicating the start time of the event

previewTime

NULL/String

For preview calls, an ISO datetime string representing the time the record was presented to the agent to preview

callPlacedTime

NULL/String

An ISO datetime string indicating the time that the call was places by the system, to the record

callAnsweredTime

NULL/String

An ISO datetime string indicating the time that the call was answered by the customer

callDisconnectedTime

NULL/String

An ISO datetime string indicating the time that the call was disconnected by the customer

completedTime

String

An ISO datetime string indicating the time the record was completed by the agent (including ACW time)

skipped

NULL/Boolean

For preview calls, inidicates whether the record was skipped

skippedById

NULL/String

For preview calls, when the record is skipped, the agent Id that skipped the call

skippedByName

NULL/String

For preview calls, when the record is skipped, the agent name skipped the call

skippedDateTime

NULL/String

For preview calls, when the record is skipped, an ISO datetime string of the datetime that the agent skipped the call

disconnectedReason

NULL/String

A string indication for the reason the call was disconnected

detectedFlag

NULL/Boolean

A boolean flag indicating the status of detection for the call. A TRUE value indicates the dialler detected a non-live customer cause code, which prevents the call from reaching the agent

carrierResponse

NULL/String

If available, indicates the carrier response SIP code

recordDisposition

Object

A number of dimensions sit below this object, describing various parts of the disposition. These dimensions are as per below (in dot notation)

recordDisposition.properties.source

String

An indicator of the source of the disposition, system or agent

recordDisposition.properties.type

String

The type of the disposition (e.g. callback, recall, complete etc)

recordDisposition.properties.timestamp

String

An ISO datetime string indicating the time the call was dispositioned.

recordDisposition.properties.values

String

An array of strings indicating the selected dispositions

callback

Object

An object containing dimensions which describe callback information applied to the record (not recall). The dimensions are as per below (in dot notation)

callback.properties.callbackType

String

The type of the scheduled callback, for a specific agent or for a queue.

callback.properties.callbackTime

String

An ISO datetime string for when the callback should be made.

callback.properties.callbackAgentId

String

The agent Id for an agent scheduled callback

agent

Object

An object containing dimensions which describe the agent involved in the interaction being reported. The dimensions are as per below (in dot notation)

agent.properties.id

String

The agent ID from Amazon Connect

agent.properties.name

String

The agent’s name, in 'Lastname, Firstname' format

recallDateTime

String

If a recall has been set, an ISO datetime string indicating when the record becomes available for dialling

contactId

String

When an actual call has been placed, this is the contact Id from Amazon Connect

dialMode

String

The dialling mode of the campaign used (ie, Preview, Progressive, Predictive, Power)

outboundCli

String

When an actual call has been placed, this is the number presented as outbound CLI for the call

numberDialled

String

When an actual call has been placed, this is the number dialled

attemptPreservationFlag

Boolean

Indicates the status of the Attempt Preservation feature for the attempt. This is an optional value used for imported records

customFields

Object

An object that contains key value pairs for all custom attributes used by the campaign to dial the record.

customFields.properties.fieldname1

*

The first field name as applied to the campaign schema for the record (variable dependent on configuration)

customFields.properties.fieldnameN

*

The first field name as applied to the campaign schema for the record (variable dependent on configuration)

Campaign Configuration Changes

An export is also provided every time a campaign has had a change applied to it. These are not metrics, they are more a point in time export of current campaign configuration settings. As they are generated every time a campaign is changed, you can store these data points every time it is generated, and create your own change audit log. Dimensions and data exported are as follows:

Field Name

Data Type

Description

type

String

Describes the type of change made to the campaign (ie, Insert/Update)

configItemType

String

Describes the configuration type which has been chanegd (ie, Campaign)

modifiedBy

String

The entity who made the change to the campaign (ie configured user, API)

modifiedTime

String

ISO date/time string representing the time and date the change was made

data

Object

An object containing dimensions to all campaign fields, which describes the current state (ie, post the change)

data.operatingHourId

String

The VF internal ID for the campaign’s operating hours

data.sqlSortStatement

String

The sorting statement applied to the campaign

data.maxAttempts

Integer

The max attempts for the campaign

data.filterStatement

String

The filter statement applied to the campaign

data.schema

Object

An object referring to the campaign’s currently assigned schema fields

data.schema.masterFieldId (for every field)

String

The instance level schema field ID applied to the campaign

data.schema.isMandatory (for every field)

Boolean

The boolean flag describing the mandatory state configuration for this field

data.schema.Id (for every field)

String

The VF internal campaign specific schema ID

data.sqlFilterStatement

String

The SQL Filter statement applied to the campaign

data.status

String

The status of the campaign (ie, Active, Paused, Stopped)

data.sortFields

Object

An object with dimensions describing the sort fields applied to the campaign

data.sortFields.masterFieldId (for every field)

String

The instance level schema field ID being sorted on

data.sortFields.id (for every field)

String

The campaign specific ID applied to the field

data.sortFields.orderNumber (for every field)

Integer

The order of the field within the sort list

data.sortFields.sortDirection (for every field)

String

The direction for sorting for the field within the object

data.name

String

The name of the campaign

data.displayFieldsMapping

Object

An object containing dimensions which describe the agent display field information

data.displayFieldsMapping.id (for every field)

String

The campaign specific ID applied to the field

data.displayFieldsMapping.orderNumber (for every field)

Integer

The order number of the field in the Agent Interface list

data.displayFieldsMapping.masterFieldId (for every field)

String

The instance level schema field ID being displayed to the agent

data.displayFieldsMapping.displayName (for every field)

String

The display name applied to the schema field

data.dialMode

String

The campaign’s dial mode

data.isActive

Boolean

The campaign’s active status

data.zoneMappingId

String

The ID of the zone group applied to the campaign

data.outboundCli

String

The default outbound CLI applied to the campaign

data.dispositionGroupId

String

The disposition group ID applied to the campaign

data.description

String

The campaign’s assigned description field

data.id

String

The campaign’s internal VF ID

Record Updates

Whenever a record is updated or changed via the API or SQS methods, a data payload is generated and available for consumption. This export describes the current value of fields, after the change has occurred. This can be used (in conjunction with the original record information you uploaded) to track any changes to records. The data provided in this payload is as follows:

Field Name

Data Type

Description

properties.type

String

properties.modifiedBy

String

Description of who or what modified the record

properties.timeModified

String

An ISO date/timestamp reflecting the time and date the record was modified

properties.status

String

An indicator of the record update status (ie, success or failed)

properties.data

Object

An object describing all of the record data points, post the change

properties.data.recordId

String

The internal VF record ID

properties.data.campaignId

String

The internal VF campaign ID which the record belongs to

properties.data.systemFields (n)

Various

The current value of the system fields (ie, crmId, attemptPreservationFlag, phoneNumber, zone etc). All fields will be separately listed

properties.data.active

Boolean

The current active state of the record

properties.data.customFields (n)

Various

The current value of the custom fields (ie, custom schema fields you have applied to the record). All fields will be separately listed

Conclusion

The exported data described in this section allows you to build detailed reporting and audit trails in your own reporting and data warehousing solutions.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.