获取长时间运行的操作

某些方法会返回长时间运行的操作。长时间运行的方法是异步执行的,当方法返回响应时,操作可能尚未完成。您可以轮询操作以查看其状态。

获取操作状态

下面展示了如何通过对 Operation 资源调用 get 方法来轮询操作的状态。

REST

如需了解完整的详细信息,请参阅 operations:get API 端点。操作完成后,系统会返回 stateSUCCESSFUL。以下示例展示了 CreateIssueModel 操作完成后的预期 JSON 输出。 您的输出可能会因生成操作的 API 而异。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • OPERATION_ID:您要分析的对话的 ID。此值是在您创建分析时返回的。

HTTP 方法和网址:

GET https://contactcenterinsights.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata",
    "createTime": "2021-01-20T10:10:10.123000Z",
    "endTime": "2021-01-20T11:11:11.456000Z",
    "request": {
      "parent": "projects/PROJECT_ID/locations/us-central1",
      "issueModel": {
        "displayName": "MODEL_NAME",
        "inputDataConfig": {
          "medium": "CHAT",
          "trainingConversationsCount": "12000",
          "filter": "medium=\"CHAT\""
        }
      }
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.contactcenterinsights.v1.IssueModel",
    "name": "projects/PROJECT_ID/locations/us-central1/issueModels/ISSUE_MODEL_ID",
    "displayName": "my-model",
    "createTime": "2021-01-20T11:11:11.456000Z",
    "state": "UNDEPLOYED",
    "inputDataConfig": {
      "medium": "CHAT",
      "trainingConversationsCount": "12000",
      "filter": "medium=\"CHAT\""
    },
    "trainingStats": {
      "analyzedConversationsCount": "8000",
      "issueStats": {
        "projects/PROJECT_ID/locations/us-central1/issueModels/ISSUE_MODEL_ID/issues/123000": {
          "issue": "projects/$PROJECT/locations/us-central1/issueModels/ISSUE_MODEL_ID/issues/123000",
          "labeledConversationsCount": "10"
        },
        "projects/PROJECT_ID/locations/us-central1/issueModels/ISSUE_MODEL_ID/issues/456000": {
          "issue": "projects/$PROJECT/locations/us-central1/issueModels/ISSUE_MODEL_IDL/issues/456000",
          "labeledConversationsCount": "20"
        },
        ...
      }
    }
  }
}

Python

如需向 CX Insights 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

from google.cloud import contact_center_insights_v1
from google.longrunning import operations_pb2


def get_operation(operation_name: str) -> operations_pb2.Operation:
    """Gets an operation.

    Args:
        operation_name:
            The operation name.
            Format is 'projects/{project_id}/locations/{location_id}/operations/{operation_id}'.
            For example, 'projects/my-project/locations/us-central1/operations/123456789'.

    Returns:
        An operation.
    """
    # Construct an Insights client that will authenticate via Application Default Credentials.
    # See authentication details at https://cloud.google.com/docs/authentication/production.
    insights_client = contact_center_insights_v1.ContactCenterInsightsClient()

    # Call the Insights client to get the operation.
    operation = insights_client.transport.operations_client.get_operation(
        operation_name
    )
    if operation.done:
        print("Operation is done")
    else:
        print("Operation is in progress")

Java

如需向 CX Insights 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证


import com.google.cloud.contactcenterinsights.v1.ContactCenterInsightsClient;
import com.google.longrunning.Operation;
import com.google.longrunning.OperationsClient;
import java.io.IOException;

public class GetOperation {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace this variable before running the sample.
    String operationName = "projects/my_project_id/locations/us-central1/operations/12345";

    getOperation(operationName);
  }

  public static Operation getOperation(String operationName) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (ContactCenterInsightsClient client = ContactCenterInsightsClient.create()) {
      OperationsClient operationsClient = client.getOperationsClient();
      Operation operation = operationsClient.getOperation(operationName);

      System.out.printf("Got operation %s%n", operation.getName());
      return operation;
    }
  }
}

Node.js

如需向 CX Insights 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

/**
 * TODO(developer): Uncomment this variable before running the sample.
 */
// const operationName = 'projects/my_project_id/locations/us-central1/operations/my_operation_id';

// Imports the Contact Center Insights client.
const {
  ContactCenterInsightsClient,
} = require('@google-cloud/contact-center-insights');

// Instantiates a client.
const client = new ContactCenterInsightsClient();

async function getOperation() {
  const [operation] = await client.operationsClient.getOperation({
    name: operationName,
  });
  console.info(`Got operation ${operation.name}.`);
}
getOperation();