Receber operações de longa duração

Alguns métodos retornam uma operação de longa duração. Os métodos de longa duração são assíncronos, e a operação pode não ser concluída quando o método retorna uma resposta. É possível pesquisar a operação para verificar o status dela.

Receber status de operação

Consulte a seguir como pesquisar o status de uma operação chamando o método get no recurso Operation.

REST

Consulte o endpoint de API operations:get para conferir todos os detalhes. Quando a operação for concluída, um valor state de SUCCESSFUL será retornado. O exemplo a seguir demonstra a saída JSON esperada quando uma operação CreateIssueModel é concluída. A saída pode variar dependendo da API que gerou a operação.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto Google Cloud .
  • OPERATION_ID: o ID da conversa que você quer analisar. Esse valor foi retornado quando você criou a análise.

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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

Para autenticar no CX Insights, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Para autenticar no CX Insights, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


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

Para autenticar no CX Insights, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

/**
 * 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();