Contents
Submitting Call Report Records
When OCS attempts a call, it sends the call report record to Web or Application Server via an HTTP POST request. This record can be used to manage compliance with Contact Attempt rules.
Call report records are sent to an external system twice.
For each attempt to place a call (or interaction) made from a started outbound dialing campaign in any dialing mode, OCS sends two call report records. The first call record (an HTTP POST request with GSW_HIST_SEQUENCE_NUM: 0) to Web or Application Server is sent when a call attempt is initiated. When the call is finalized with any result (Answer, Answering Machine, Abandoned, DoNotCall, and so on), the second call record (an HTTP POST request with GSW_HIST_SEQUENCE_NUM: 1) containing the GSW_CALL_RESULT parameter is sent to Web or Application Server.
The GSW_HIST_SEQUENCE_NUM: 1 record overwrites the GSW_HIST_SEQUENCE_NUM: 0 record when dialing rules are applied by the compliance manager.
Feature Configuration
Add the following configuration options, as described on the OCS Option Descriptions page in this manual:
- send-history
- history-uri
- history-wait-condition-threshold
- history-wait-recovery-timeout
- validation-race-condition-call-result
The data posted to Web or Application Server can contain the following attributes. Refer to the Reference Manual for a detailed description of each attribute.
Field | Description | Type | Mandatory |
---|---|---|---|
GSW_CALL_ATTEMPT_GUID | The global unique identifier of the call processing attempt used for historical reporting. | String | Yes |
GSW_HIST_SEQUENCE_NUM | The record submission sequential number 0 or 1. Value 0 means the first call report record submission for a given call attempt. Value 1 means the second call report record submission for a given finalized call. | Integer | Yes |
GSW_TENANT_NAME | The value is populated from the current Tenant (where the Campaign Group belongs). The Tenant\Annex\devops\customer_name option. Defaults to undefined if not set. | String | Yes, with exception when the Annex of the Tenant is not configured properly |
GSW_TENANT_CCID | The Contact Center ID. The value is populated from the current Tenant (where the Campaign Group belongs). The Tenant\Annex\devops\customer_name option. Defaults to undefined if not set. | String | Yes, with exception when the Annex of the Tenant is not configured properly |
GSW_PHONE | The customer’s phone number. | String | Yes |
GSW_CHAIN_ID | The unique chain identifier. | Integer | Yes |
GSW_CHAIN_N | The unique identifier of a record in a chain. | Integer | Yes |
GSW_PHONE_TYPE | The customer's phone type. | Integer | Yes |
GSW_CUSTOMER_ID | The customer identifier that is used for requests. The ID that is taken from the c_client_id field of the Calling List (this field is configured with the GSW_CUSTOMER_ID send_attribute). This field is optional but it is sent if it is defined in the Calling List table. | String | No |
GSW_START_PROCESSING | The timestamp when OCS starts processing a given call attempt. If pre-dial validation is in place, this is the time when a pre-dial validation request is sent. | Unix UTC epoch dot milliseconds | Yes |
GSW_CALL_TIME | The time when OCS sends a request to the dialer (for example, TMakePredictiveCall). | Unix UTC epoch dot milliseconds | No. The field is available when a request was actually sent. The field is not available for negative pre-dial validation. |
GSW_SCHEDULED_TIME | The time when the record is rescheduled. GSW_DATE_TIME in OCS desktop protocol terms. | Unix UTC epoch dot milliseconds | No. The field is available only with records of particular types. |
GSW_TZ_OFFSET | The time difference, in seconds, between Universal Time Coordinated (UTC) and a particular time zone. | Integer | Yes |
GSW_TZ_NAME | The Configuration Server time zone name (usually a standard three-letter abbreviation)--for example: PST, CTT, GMT. | String | Yes |
GSW_CALL_RESULT | The call result of the primary record. | Integer | Yes |
GSW_CAMPAIGN_NAME | The name of the Campaign. | String | Yes |
GSW_CAMPAIGN_TEMPLATE_NAME | The name of the Campaign Template (the Script of type Outbound Campaign, referenced by the Campaign Group via the scriptDBID attribute). | String | No. OCS does not deliver it if the Campaign Group does not have a reference to the Template (possible in non-CX Contact configurations). |
GSW_CALLING_LIST | The name of the Calling List. | String | Yes |
GSW_CALLING_LIST_DBID | The database identifier of the calling list. | Integer | Yes |
GSW_CAMPAIGN_GROUP_NAME | The name of the Campaign Group. | String | Yes |
GSW_CAMPAIGN_GROUP_GUID | The global unique identifier of the Campaign Group, which is taken from uuid_generator::to_str(Session.pSessionGUID). | String | Yes |
GSW_GROUP_NAME | The Agent or Place Group name. | String | Yes |
GSW_QUEUE_NAME | The name of the Voice Transfer Destination DN. | String | Yes |
GSW_DIAL_MODE | Current dialing mode of the Campaign Group. | Integer | Yes |
GSW_AGENT_ID | The Agent ID field value. | String | No. The field is available for successful calls only. |
GSW_RECORD_TYPE | The record type of the primary record after the processing. | Integer | Yes |
GSW_RECORD_STATUS | The record status. | Integer | Yes |
GSW_OPTIMIZE_BY | The optimization method (enumeration). | Integer | No. The field is available for Predictive modes only. |
GSW_OPTIMIZE_GOAL | The optimization goal. | Integer | No. The field is available for Predictive modes only. |
GSW_DIALING | The time when call dialing is started. The timeDialing value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_RINGING | The time when a call is ringing. The timeClientRinging value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_RELEASED | The time when a call is released. The timeBadCallReleased value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_ANSWERED | The time when a call is answered. The timeClientPickedUp value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_CPD_COMPLETED | The time when CPD is completed. The timeCPDFinished value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_QUEUED | The time when a call is placed in a queue. The timeQueued value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_AGENT_RINGING | The timeAgentRinging value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_AGENT_ANSWERED | The time when an agent answers a call. The timeAgentEstablished value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_DIVERTED | The time when a call is diverted. The timeAMDiverted value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_ABANDONED | The time when a call is abandoned. The timeAbandoned value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_AGENT_RELEASED | The time when an agent releases a call. The timeAgentCallReleased value that is taken from FTC timestamps. | Unix UTC epoch dot milliseconds | No |
GSW_ACW_COMPLETED | The time when After Call Work is completed. | Unix UTC epoch dot milliseconds | No |
GSW_COMPLETE_PROCESSING | The time when processing of a call attempt is completed. The time when an outbound record for the given call is considered completed and is removed from OCS active processing. | Unix UTC epoch dot milliseconds | No |
GSW_POSTAL_CODE | The client's postal code. | String | No. The field is available when it's defined in the calling list. |
GSW_COUNTRY_CODE | The client's country code. | String | No. The field is available when it's defined in the calling list. |
GSW_TZ_JAVA_NAME | The client's time zone. | String | No. The field is available when it's defined in the calling list. |
GSW_STATE_CODE | The client's region code. This is a two-letter abbreviation and not ISO 3166-2 (for example, CA and not US-CA). | String | No. The field is available when it's defined in the calling list. |
GSW_D_AREA_CODE | The area code associated with the device. | String | No. The field is available when it's defined in the calling list. |
GSW_D_COUNTRY_CODE | The country code associated with the device. | String | No. The field is available when it's defined in the calling list. |
GSW_D_TZ_JAVA_NAME | The time zone associated with the device. | String | No. The field is available when it's defined in the calling list. |
GSW_D_STATE_CODE | The region code of a device. This is a two-letter abbreviation and not ISO 3166-2 (for example, CA and not US-CA). | String | No. The field is available when it's defined in the calling list. |
GSW_DEVICE_MASK | The device mask. | Integer | No. The field is available when it's defined in the calling list. |
GSW_BLOCKING_RULE | The name of the rule that caused a negative result of pre-dial validation. OCS might receive it from a third-party validation server in a negative validation response. In such case, OCS passes it in a call attempt record submission unchanged. | String | No. The field is available only for negative pre-dial validation results. |
GSW_BLOCKING_RULE_TYPE | The type of the compliance object that caused a negative pre-dial validation (Mandatory Suppression List, Custom Compliance Rule, etc). OCS may receive it from a third-party validation server in a negative validation response. In such case, OCS passes it in a call attempt record submission unchanged. | Integer | No. The field is available only for negative pre-dial validation results. |
User-defined fields:
<USER FIELD KEY NAME> |
Any user-defined fields with the send attribute, where send attribute values does not start with GSW_. | String | No |
GSW_CPN_DIGITS | The value of CPNDigits that is used in this call attempt. (The TMakePredictiveCall request parameter or attached to the
preview record via the GSW_CPN_DIGITS key-value pair). May not be present if no CPNDigits has been configured at any level. |
String | No |
GSW_CPN_DIGITS_SET | The name of the Caller ID Set (the Script configuration object) that is included the CPNDigits value used in this call attempt. May not be present if no CPNDigits is configured or if CPNDigits is configured not via a Caller ID Set (via SCXML or the CPNDigits OCS option at any level). | String | No |
GSW_DISPOSITION_CODE | The value of the Disposition Code that is provided to OCS by the agent desktop in a record finalization request or third-party validation server in a 409 Cancel negative response body in the GSW_DISPOSITION_CODE key-value pair. | String | No |
GSW_DEVICE_INDEX | The device index value for a given record. | Integer | Yes |
Responses
When OCS sends the HTTP POST request, Web or Application Server returns a response code:
- 200 OK — success
- 4xx or 5xx — failure
Re-submitting Failed Records
If OCS receives any response other than 200 OK from Web or Application Server after submitting the HTTP POST request, it treats the record as failed and re-submits the record.
OCS checks the value in the history-wait-recovery-timeout, which stores the time OCS should wait before re-submitting another HTTP POST request and will re-submit the HTTP POST request to Web or Application Server.
If OCS reaches the threshold specified in the history-wait-condition-threshold option, the wait condition is triggered, which means dialing is suspended until re-submission of all failed records is completed.
If OCS reaches the threshold specified in the history-wait-condition-threshold option before receiving a 200 OK response, it stops dialing.
Race Conditions
If OCS sends a pre-dial validation request to Web or Application Server for a contact record that Web or Application Server is currently processing but has not yet saved (for example, it has not yet sent a response or the record is marked for re-processing), a race condition occurs.
As a prevention measure, OCS checks for a race condition before submitting a pre-dial validation request. If it detects a race condition, it will not dial the record. Instead, OCS refers to the call result specified in the validation-race-condition-call-result option and attempts to apply that treatment to the call result.
In this scenario, the following log entry appears:
Predial check aborted due to race condition for phone %s