Skip to content

get_current_metric_data async

get_current_metric_data(
    instance_id: InstanceId,
    filters: Filters,
    current_metrics: CurrentMetrics,
    *,
    config_overrides: Optional[AsyncConnectClientConfig] = None,
    groupings: Optional[Groupings] = None,
    next_token: Optional[NextToken] = None,
    max_results: Optional[MaxResult100] = None,
    sort_criteria: Optional[CurrentMetricSortCriteriaMaxOne] = None,
) -> GetCurrentMetricDataResponse

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.

When you make a successful API request, you can expect the following metric values in the response:

  1. Metric value is null: The calculation cannot be performed due to divide by zero or insufficient data

  2. Metric value is a number (including 0) of defined type: The number provided is the calculation result

  3. MetricResult list is empty: The request cannot find any data in the system

The following guidelines can help you work with the API:

  • 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

Parameters:

  • instance_id (InstanceId) –

    The identifier of the Connect Customer instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

  • filters (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

    Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request.

    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.

  • groupings (Optional[Groupings], default: None ) –

    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 the QUEUE as the primary grouping and use queue filter. When you group by AGENT_STATUS, the only metric available is the AGENTS_ONLINE metric.

    • If you group by SUBTYPE or VALIDATION_TEST_TYPE as secondary grouping then you must include QUEUE as 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 metrics CONTACTS_SCHEDULED, CONTACTS_IN_QUEUE, and OLDEST_CONTACT_AGE.

    • When using the RoutingStepExpression filter, group by ROUTING_STEP_EXPRESSION is required.

  • current_metrics (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.

    MetricId should be used to reference custom metrics or out of the box metrics as Arn. If using MetricId, the limit is 10 MetricId per request.

    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 RoutingStepExpression is used, this metric is still calculated from enqueue time. For example, if a contact that has been queued under for 10 seconds has expired and becomes active, then OLDEST_CONTACT_AGE for 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

  • next_token (Optional[NextToken], default: None ) –

    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.

  • max_results (Optional[MaxResult100], default: None ) –

    The maximum number of results to return per page.

  • sort_criteria (Optional[CurrentMetricSortCriteriaMaxOne], default: None ) –

    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_ACTIVE and SLOTS_AVAILABLE is not supported.

Raises:

Source code in docs_src/capo_connect/_services/async_connect.py
async def get_current_metric_data(
    self,
    instance_id: "capo_connect.types.instance_id.InstanceId",
    filters: "capo_connect.types.filters.Filters",
    current_metrics: "capo_connect.types.current_metrics.CurrentMetrics",
    *,
    config_overrides: Optional[AsyncConnectClientConfig] = None,
    groupings: Optional["capo_connect.types.groupings.Groupings"] = None,
    next_token: Optional["capo_connect.types.next_token.NextToken"] = None,
    max_results: Optional["capo_connect.types.max_result100.MaxResult100"] = None,
    sort_criteria: Optional[
        "capo_connect.types.current_metric_sort_criteria_max_one.CurrentMetricSortCriteriaMaxOne"
    ] = None,
) -> "capo_connect.types.get_current_metric_data_response.GetCurrentMetricDataResponse":
    """<p>Gets the real-time metric data from the specified Connect Customer instance.</p> <p>For a description of each metric, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html">Metrics definitions</a> in the <i>Connect Customer Administrator Guide</i>.</p> <note> <p>When you make a successful API request, you can expect the following metric values in the response:</p> <ol> <li> <p> <b>Metric value is null</b>: The calculation cannot be performed due to divide by zero or insufficient data</p> </li> <li> <p> <b>Metric value is a number (including 0) of defined type</b>: The number provided is the calculation result</p> </li> <li> <p> <b>MetricResult list is empty</b>: The request cannot find any data in the system</p> </li> </ol> <p>The following guidelines can help you work with the API:</p> <ul> <li> <p>Each dimension in the metric response must contain a value</p> </li> <li> <p>Each item in MetricResult must include all requested metrics</p> </li> <li> <p>If the response is slow due to large result sets, try these approaches:</p> <ul> <li> <p>Add filters to reduce the amount of data returned</p> </li> </ul> </li> </ul> </note>

    Args:
        instance_id: <p>The identifier of the Connect Customer instance. You can <a href="https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html">find the instance ID</a> in the Amazon Resource Name (ARN) of the instance.</p>
        filters: <p>The filters to apply to returned metrics. You can filter up to the following limits:</p> <ul> <li> <p>Queues: 100</p> </li> <li> <p>Routing profiles: 100</p> </li> <li> <p>Channels: 3 (VOICE, CHAT, and TASK channels are supported.)</p> </li> <li> <p>RoutingStepExpressions: 50</p> </li> <li> <p>AgentStatuses: 50</p> </li> <li> <p>Subtypes: 10</p> </li> <li> <p>ValidationTestTypes: 10</p> </li> </ul> <p>Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request.</p> <p>When using <code>AgentStatuses</code> as filter make sure Queues is added as primary filter.</p> <p>When using <code>Subtypes</code> as filter make sure Queues is added as primary filter.</p> <p>When using <code>ValidationTestTypes</code> as filter make sure Queues is added as primary filter.</p> <p>When using the <code>RoutingStepExpression</code> filter, you need to pass exactly one <code>QueueId</code>. The filter is also case sensitive so when using the <code>RoutingStepExpression</code> filter, grouping by <code>ROUTING_STEP_EXPRESSION</code> is required.</p> <p>Currently tagging is only supported on the resources that are passed in the filter.</p>
        groupings: <p>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 <code>QUEUE</code>, the metrics returned apply to each queue rather than aggregated for all queues. </p> <p>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.</p> <ul> <li> <p>If you group by <code>CHANNEL</code>, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.</p> </li> <li> <p>If you group by <code>AGENT_STATUS</code>, you must include the <code>QUEUE</code> as the primary grouping and use queue filter. When you group by <code>AGENT_STATUS</code>, the only metric available is the <code>AGENTS_ONLINE</code> metric.</p> </li> <li> <p>If you group by <code>SUBTYPE</code> or <code>VALIDATION_TEST_TYPE</code> as secondary grouping then you must include <code>QUEUE</code> as primary grouping and use Queue as filter</p> </li> <li> <p>If you group by <code>ROUTING_PROFILE</code>, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics <code>CONTACTS_SCHEDULED</code>, <code>CONTACTS_IN_QUEUE</code>, and <code> OLDEST_CONTACT_AGE</code>.</p> </li> <li> <p>When using the <code>RoutingStepExpression</code> filter, group by <code>ROUTING_STEP_EXPRESSION</code> is required.</p> </li> </ul>
        current_metrics: <p>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 <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html">Metrics definitions</a> in the <i>Connect Customer Administrator Guide</i>.</p> <note> <p> MetricId should be used to reference custom metrics or out of the box metrics as Arn. If using MetricId, the limit is 10 MetricId per request.</p> </note> <dl> <dt>AGENTS_AFTER_CONTACT_WORK</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#aftercallwork-real-time">ACW</a> </p> </dd> <dt>AGENTS_AVAILABLE</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#available-real-time">Available</a> </p> </dd> <dt>AGENTS_ERROR</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#error-real-time">Error</a> </p> </dd> <dt>AGENTS_NON_PRODUCTIVE</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#non-productive-time-real-time">NPT (Non-Productive Time)</a> </p> </dd> <dt>AGENTS_ON_CALL</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#on-call-real-time">On contact</a> </p> </dd> <dt>AGENTS_ON_CONTACT</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#on-call-real-time">On contact</a> </p> </dd> <dt>AGENTS_ONLINE</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#online-real-time">Online</a> </p> </dd> <dt>AGENTS_STAFFED</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#staffed-real-time">Staffed</a> </p> </dd> <dt>CONTACTS_IN_QUEUE</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#in-queue-real-time">In queue</a> </p> </dd> <dt>CONTACTS_SCHEDULED</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#scheduled-real-time">Scheduled</a> </p> </dd> <dt>ESTIMATED_WAIT_TIME</dt> <dd> <p>Unit: SECONDS</p> <p>This metric supports filter and grouping combination only used for core routing purpose. Valid filter and grouping use cases: </p> <ul> <li> <p>Filter by a list of [Queues] and a list of [Channels], group by [“QUEUE”, “CHANNEL”]</p> </li> <li> <p>Filter by a singleton list of [Queue], a singleton list of [Channel], a list of [RoutingStepExpression], group by [“ROUTING_STEP_EXPRESSION”].</p> </li> </ul> </dd> <dt>OLDEST_CONTACT_AGE</dt> <dd> <p>Unit: SECONDS</p> <p>When you use groupings, Unit says SECONDS and the Value is returned in SECONDS. </p> <p>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:</p> <p> <code>{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 </code>}</p> <p>The actual OLDEST_CONTACT_AGE is 24 seconds.</p> <p>When the filter <code>RoutingStepExpression</code> is used, this metric is still calculated from enqueue time. For example, if a contact that has been queued under <code><Expression 1></code> for 10 seconds has expired and <code><Expression 2></code> becomes active, then <code>OLDEST_CONTACT_AGE</code> for this queue will be counted starting from 10, not 0.</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#oldest-real-time">Oldest</a> </p> </dd> <dt>SLOTS_ACTIVE</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#active-real-time">Active</a> </p> </dd> <dt>SLOTS_AVAILABLE</dt> <dd> <p>Unit: COUNT</p> <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-definitions.html#availability-real-time">Availability</a> </p> </dd> </dl>
        next_token: <p>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.</p> <p>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.</p>
        max_results: <p>The maximum number of results to return per page.</p>
        sort_criteria: <p>The way to sort the resulting response based on metrics. You can enter one sort criteria. By default resources are sorted based on <code>AGENTS_ONLINE</code>, <code>DESCENDING</code>. The metric collection is sorted based on the input metrics.</p> <p>Note the following:</p> <ul> <li> <p>Sorting on <code>SLOTS_ACTIVE</code> and <code>SLOTS_AVAILABLE</code> is not supported.</p> </li> </ul>

    Raises:
        capo_connect.errors.internal_service_exception.InternalServiceException: <p>Request processing failed because of an error or failure with the service.</p>
        capo_connect.errors.invalid_parameter_exception.InvalidParameterException: <p>One or more of the specified parameters are not valid.</p>
        capo_connect.errors.invalid_request_exception.InvalidRequestException: <p>The request is not valid.</p>
        capo_connect.errors.resource_not_found_exception.ResourceNotFoundException: <p>The specified resource was not found.</p>
        capo_connect.errors.throttling_exception.ThrottlingException: <p>The throttling limit has been exceeded.</p>
        capo_connect.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    async def _handler(
        req: "AsyncOperationRequest[capo_connect.types.get_current_metric_data_request.GetCurrentMetricDataRequest]",
    ) -> AsyncOperationResponse[
        "capo_connect.types.get_current_metric_data_response.GetCurrentMetricDataResponse"
    ]:
        import capo_connect._operations.amazon_connect_service.get_current_metric_data

        (
            output,
            http_response,
        ) = await capo_connect._operations.amazon_connect_service.get_current_metric_data.async_get_current_metric_data(
            req.options, req.input
        )
        return AsyncOperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("GetCurrentMetricData")
    )
    input_: capo_connect.types.get_current_metric_data_request.GetCurrentMetricDataRequest = {
        "instance_id": instance_id,
        "filters": filters,
        "current_metrics": current_metrics,
    }
    if groupings is not None:
        input_["groupings"] = groupings
    if next_token is not None:
        input_["next_token"] = next_token
    if max_results is not None:
        input_["max_results"] = max_results
    if sort_criteria is not None:
        input_["sort_criteria"] = sort_criteria

    response = await aexecute_pipeline(
        AsyncOperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    await response.response.aclose()
    return response.output