getCurrentMetricData method

Future<GetCurrentMetricDataResponse> getCurrentMetricData({
  1. required List<CurrentMetric> currentMetrics,
  2. required Filters filters,
  3. required String instanceId,
  4. List<Grouping>? groupings,
  5. int? maxResults,
  6. String? nextToken,
})

Gets the real-time metric data from the specified Amazon Connect instance.

For a description of each metric, see Real-time Metrics Definitions in the Amazon Connect Administrator Guide.

May throw InvalidRequestException. May throw InvalidParameterException. May throw InternalServiceException. May throw ThrottlingException. May throw ResourceNotFoundException.

Parameter currentMetrics : The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see Real-time Metrics Definitions in the Amazon Connect Administrator Guide.

AGENTS_AFTER_CONTACT_WORK
Unit: COUNT

Name in real-time metrics report: ACW

AGENTS_AVAILABLE
Unit: COUNT

Name in real-time metrics report: Available

AGENTS_ERROR
Unit: COUNT

Name in real-time metrics report: Error

AGENTS_NON_PRODUCTIVE
Unit: COUNT

Name in real-time metrics report: NPT (Non-Productive Time)

AGENTS_ON_CALL
Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ON_CONTACT
Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ONLINE
Unit: COUNT

Name in real-time metrics report: Online

AGENTS_STAFFED
Unit: COUNT

Name in real-time metrics report: Staffed

CONTACTS_IN_QUEUE
Unit: COUNT

Name in real-time metrics report: In queue

CONTACTS_SCHEDULED
Unit: COUNT

Name in real-time metrics report: Scheduled

OLDEST_CONTACT_AGE
Unit: SECONDS

When you use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:

{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 }

The actual OLDEST_CONTACT_AGE is 24 seconds.

Name in real-time metrics report: Oldest

SLOTS_ACTIVE
Unit: COUNT

Name in real-time metrics report: Active

SLOTS_AVAILABLE
Unit: COUNT

Name in real-time metrics report: Availability

Parameter filters : The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.

Parameter instanceId : The identifier of the Amazon Connect instance.

Parameter groupings : The grouping applied to the metrics returned. For example, when grouped by QUEUE, the metrics returned apply to each queue rather than aggregated for all queues. If you group by CHANNEL, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.

If no Grouping is included in the request, a summary of metrics is returned.

Parameter maxResults : The maximimum number of results to return per page.

Parameter nextToken : The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.

The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.

Implementation

Future<GetCurrentMetricDataResponse> getCurrentMetricData({
  required List<CurrentMetric> currentMetrics,
  required Filters filters,
  required String instanceId,
  List<Grouping>? groupings,
  int? maxResults,
  String? nextToken,
}) async {
  ArgumentError.checkNotNull(currentMetrics, 'currentMetrics');
  ArgumentError.checkNotNull(filters, 'filters');
  ArgumentError.checkNotNull(instanceId, 'instanceId');
  _s.validateStringLength(
    'instanceId',
    instanceId,
    1,
    100,
    isRequired: true,
  );
  _s.validateNumRange(
    'maxResults',
    maxResults,
    1,
    100,
  );
  final $payload = <String, dynamic>{
    'CurrentMetrics': currentMetrics,
    'Filters': filters,
    if (groupings != null)
      'Groupings': groupings.map((e) => e.toValue()).toList(),
    if (maxResults != null) 'MaxResults': maxResults,
    if (nextToken != null) 'NextToken': nextToken,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri: '/metrics/current/${Uri.encodeComponent(instanceId)}',
    exceptionFnMap: _exceptionFns,
  );
  return GetCurrentMetricDataResponse.fromJson(response);
}