getCurrentMetricData method
Gets the real-time metric data from the specified Connect Customer instance.
For a description of each metric, see Metrics definitions in the Connect Customer Administrator Guide.
- Metric value is null: The calculation cannot be performed due to divide by zero or insufficient data
- Metric value is a number (including 0) of defined type: The number provided is the calculation result
- MetricResult list is empty: The request cannot find any data in the system
- Each dimension in the metric response must contain a value
- Each item in MetricResult must include all requested metrics
-
If the response is slow due to large result sets, try these approaches:
- Add filters to reduce the amount of data returned
May throw InternalServiceException.
May throw InvalidParameterException.
May throw InvalidRequestException.
May throw ResourceNotFoundException.
May throw ThrottlingException.
Parameter currentMetrics :
The metrics to retrieve. Specify the name or metricId, and unit for each
metric. The following metrics are available. For a description of all the
metrics, see Metrics
definitions in the Connect Customer 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
- ESTIMATED_WAIT_TIME
-
Unit: SECONDS
This metric supports filter and grouping combination only used for core routing purpose. Valid filter and grouping use cases:
- Filter by a list of \[Queues\] and a list of \[Channels\], group by \[“QUEUE”, “CHANNEL”\]
- Filter by a singleton list of \[Queue\], a singleton list of \[Channel\], a list of \[RoutingStepExpression\], group by \[“ROUTING_STEP_EXPRESSION”\].
- OLDEST_CONTACT_AGE
-
Unit: SECONDS
When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.
When you do not 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.
When the filter
RoutingStepExpressionis used, this metric is still calculated from enqueue time. For example, if a contact that has been queued under<Expression 1>for 10 seconds has expired and<Expression 2>becomes active, thenOLDEST_CONTACT_AGEfor this queue will be counted starting from 10, not 0.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 filters to apply to returned metrics. You can filter up to the
following limits:
- Queues: 100
- Routing profiles: 100
- Channels: 3 (VOICE, CHAT, and TASK channels are supported.)
- RoutingStepExpressions: 50
- AgentStatuses: 50
- Subtypes: 10
- ValidationTestTypes: 10
When using AgentStatuses as filter make sure Queues is added
as primary filter.
When using Subtypes as filter make sure Queues is added as
primary filter.
When using ValidationTestTypes as filter make sure Queues is
added as primary filter.
When using the RoutingStepExpression filter, you need to pass
exactly one QueueId. The filter is also case sensitive so
when using the RoutingStepExpression filter, grouping by
ROUTING_STEP_EXPRESSION is required.
Currently tagging is only supported on the resources that are passed in the filter.
Parameter instanceId :
The identifier of the Connect Customer instance. You can find
the instance ID in the Amazon Resource Name (ARN) of the instance.
Parameter groupings :
Defines the level of aggregation for metrics data by a dimension(s). Its
similar to sorting items into buckets based on a common characteristic,
then counting or calculating something for each bucket. For example, when
grouped by QUEUE, the metrics returned apply to each queue
rather than aggregated for all queues.
The grouping list is an ordered list, with the first item in the list defined as the primary grouping. If no grouping is included in the request, the aggregation happens at the instance-level.
-
If you group by
CHANNEL, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported. -
If you group by
AGENT_STATUS, you must include theQUEUEas the primary grouping and use queue filter. When you group byAGENT_STATUS, the only metric available is theAGENTS_ONLINEmetric. -
If you group by
SUBTYPEorVALIDATION_TEST_TYPEas secondary grouping then you must includeQUEUEas primary grouping and use Queue as filter -
If you group by
ROUTING_PROFILE, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metricsCONTACTS_SCHEDULED,CONTACTS_IN_QUEUE, andOLDEST_CONTACT_AGE. -
When using the
RoutingStepExpressionfilter, group byROUTING_STEP_EXPRESSIONis required.
Parameter maxResults :
The maximum 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.
Parameter sortCriteria :
The way to sort the resulting response based on metrics. You can enter one
sort criteria. By default resources are sorted based on
AGENTS_ONLINE, DESCENDING. The metric collection
is sorted based on the input metrics.
Note the following:
-
Sorting on
SLOTS_ACTIVEandSLOTS_AVAILABLEis not supported.
Implementation
Future<GetCurrentMetricDataResponse> getCurrentMetricData({
required List<CurrentMetric> currentMetrics,
required Filters filters,
required String instanceId,
List<Grouping>? groupings,
int? maxResults,
String? nextToken,
List<CurrentMetricSortCriteria>? sortCriteria,
}) async {
_s.validateNumRange(
'maxResults',
maxResults,
1,
100,
);
final $payload = <String, dynamic>{
'CurrentMetrics': currentMetrics,
'Filters': filters,
if (groupings != null)
'Groupings': groupings.map((e) => e.value).toList(),
if (maxResults != null) 'MaxResults': maxResults,
if (nextToken != null) 'NextToken': nextToken,
if (sortCriteria != null) 'SortCriteria': sortCriteria,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/metrics/current/${Uri.encodeComponent(instanceId)}',
exceptionFnMap: _exceptionFns,
);
return GetCurrentMetricDataResponse.fromJson(response);
}