API を使用して会話を分析する

会話は、対応する会話オブジェクトが作成された後、Customer Experience Insights で確認できます。このハウツーガイドでは、REST API を使用して会話を分析するプロセスについて説明します。必要に応じて、CX Insights コンソールを使用してこれらの操作を行うこともできます。

前提条件

  1. Google Cloud プロジェクトで Cloud Storage API と Insights API を有効にします。
  2. 会話データをインポートします

チャットの会話

  1. 会話のチャット文字起こしを Cloud Storage バケットのオブジェクトとしてインポートします。

  2. オブジェクト パスを gs://<bucket>/<object> 形式でメモします。

チャット文字起こしファイルは、CCAI 会話データ形式に一致する JSON 形式のファイルとして指定する必要があります。

音声会話

  1. Cloud Storage バケットからすべてのファイルをインポートします。音声ファイルと文字起こしファイルは、Cloud Storage バケットのオブジェクトとしてインポートする必要があります。

  2. 2 つのオブジェクト パスを gs://<bucket>/<object> 形式でメモします。

文字起こしファイルは、Cloud Speech-to-Text API の文字起こしで返された結果である必要があります。具体的には、音声認識から返される response と一致する必要があります。これは、すべての Speech-to-Text API バージョンで同期認識と非同期認識で同じです。他の文字起こし形式はサポートされておらず、会話分析中にエラーが発生します。

会話を分析する

CX Insights で Conversation オブジェクトを作成したら、有用な結果を得るために分析する必要があります。1 つの会話を複数回分析できます。分析ごとに新しい Analysis オブジェクトが作成されます。

分析では、会話データに対して一連のアノテーターが実行され、結果がレスポンスで返されます。デフォルトでは、分析は使用可能なすべてのアノテーターを実行します。必要に応じて、指定されたアノテーターのみを実行するように分析を構成できます。

分析は長時間実行オペレーションです。CreateAnalysis メソッドを呼び出すと、長時間実行プロセスを表す Operation オブジェクトが作成されます。オペレーションが完了すると、Operation オブジェクトに結果が含まれます。Operation オブジェクトをポーリングして、完了を確認できます。

新しい分析を作成する

REST

詳細については、conversations.analyses:create API エンドポイントをご覧ください。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • CONVERSATION_ID: 分析する会話の ID。この値は `createConversation` レスポンスで返されました。

HTTP メソッドと URL:

POST https://contactcenterinsights.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/conversations/CONVERSATION_ID/analyses

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID"
}

Python

CX Insights で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

from google.cloud import contact_center_insights_v1


def create_analysis(conversation_name: str) -> contact_center_insights_v1.Analysis:
    """Creates an analysis.

    Args:
        conversation_name:
            The parent resource of the analysis.
            Format is 'projects/{project_id}/locations/{location_id}/conversations/{conversation_id}'.
            For example, 'projects/my-project/locations/us-central1/conversations/123456789'.

    Returns:
        An analysis.
    """
    # Construct an analysis.
    analysis = contact_center_insights_v1.Analysis()

    # Call the Insights client to create an analysis.
    insights_client = contact_center_insights_v1.ContactCenterInsightsClient()
    analysis_operation = insights_client.create_analysis(
        parent=conversation_name, analysis=analysis
    )
    analysis = analysis_operation.result(timeout=86400)
    print(f"Created {analysis.name}")
    return analysis

Java

CX Insights で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。


import com.google.cloud.contactcenterinsights.v1.Analysis;
import com.google.cloud.contactcenterinsights.v1.ContactCenterInsightsClient;
import java.io.IOException;

public class CreateAnalysis {

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

    createAnalysis(conversationName);
  }

  public static Analysis createAnalysis(String conversationName) throws Exception, 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()) {
      // Construct an analysis.
      Analysis analysis = Analysis.newBuilder().build();

      // Call the Insights client to create an analysis.
      Analysis response = client.createAnalysisAsync(conversationName, analysis).get();
      System.out.printf("Created %s%n", response.getName());
      return response;
    }
  }
}

Node.js

CX Insights で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

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

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

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

async function createAnalysis() {
  const [operation] = await client.createAnalysis({
    parent: conversationName,
  });

  // Wait for the operation to complete.
  const [analysis] = await operation.promise();
  console.info(`Created ${analysis.name}`);
}
createAnalysis();

(省略可)分析を構成する

REST

詳細については、conversations.analyses:create API エンドポイントをご覧ください。実行するアノテーターを annotatorSelector オブジェクトに含めて、true に設定します。含まれていないアノテーターはデフォルトで false になります。annotatorSelector オブジェクトでアノテーターを指定しない場合、すべてのアノテーターが実行されます。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • PHRASE_MATCHER(s): フレーズ マッチャー アノテーターに使用するフレーズ マッチャーの完全修飾フレーズ マッチャー リソース名。空のままにすると、すべてのアクティブなフレーズ マッチャーが実行されます。
  • ISSUE_MODEL(s): 問題モデル アノテーターに使用する問題モデルの完全修飾リソース名。run_issue_model_annotator が true の場合にのみ機能します。空のままにすると、デプロイされたすべての問題モデルが実行されます。現在、デプロイできるモデルは 1 つに制限されています。

HTTP メソッドと URL:

POST https://contactcenterinsights.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/conversations/CONVERSATION_ID/analyses

リクエストの本文(JSON):

{
  "annotatorSelector": {
    "run_interruption_annotator": {true/false},
    "run_silence_annotator": {true/false},
    "run_phrase_matcher_annotator": {true/false},
    "phrase_matchers": PHRASE_MATCHER(s),
    "run_sentiment_annotator": {true/false},
    "run_entity_annotator": {true/false},
    "run_intent_annotator": {true/false},
    "run_issue_model_annotator": {true/false}
    "issue_models": ISSUE_MODEL(s)
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID"
}

オペレーションをポーリングする

分析を作成すると、長時間実行オペレーションが返されます。長時間実行メソッドは非同期で、メソッドがレスポンスを返すときにオペレーションが完了していない場合があります。オペレーションをポーリングして、そのステータスを確認できます。詳細とコードサンプルについては、長時間実行オペレーションのページをご覧ください。