仮想エージェントによるサポート

この入門ガイドでは、API を直接呼び出して Virtual Agent Assist 機能を有効にする手順について説明します。Virtual Agent Assist アシスタントは会話を追跡し、Dialogflow 仮想エージェントを使用して人間のエージェントにワークフローのサポートを提供し、データ分析のインテントを検出します。

必要に応じて、 Agent Assist コンソール を使用してモデルをトレーニングし、シミュレータを使用してパフォーマンスをテストできます。手順については、Virtual Agent Assist コンソールのチュートリアル をご覧ください。

始める前に

Virtual Agent Assist を有効にするには、仮想エージェントで使用する Agent Assist 機能を 1 つ以上実装しておく必要があります。スマート リプライ、FAQ アシスト、記事の候補、スマート作成は、Virtual Agent Assist と単独で使用することも、組み合わせて使用することもできます。実装の詳細については、次のリンクから関連ドキュメントをご覧ください。

会話を作成する

エンドユーザーと人間または仮想エージェントとのダイアログが開始されると、会話が作成されます。 候補を表示するには、エンドユーザーの参加者と人間のエージェントの参加者を両方とも作成して、会話に加える必要があります 。以下のセクションでは、このプロセスについて詳しく説明します。

まず、会話を作成する必要があります。

REST

会話を作成するには、 create メソッドを Conversation リソースで呼び出します。

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

  • PROJECT_ID: クラウド プロジェクト ID
  • LOCATION_ID: 地域 ID
  • CONVERSATION_PROFILE_ID: 会話プロファイルの作成時に受け取った ID

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations

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

{
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
}

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

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "IN_PROGRESS",
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z"
}

conversations の後のパスセグメントには、新しい会話 ID が含まれます。

Python

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

def create_conversation(project_id, conversation_profile_id):
    """Creates a conversation with given values

    Args:
        project_id:  The GCP project linked with the conversation.
        conversation_profile_id: The conversation profile id used to create
        conversation."""

    client = dialogflow.ConversationsClient()
    conversation_profile_client = dialogflow.ConversationProfilesClient()
    project_path = client.common_project_path(project_id)
    conversation_profile_path = conversation_profile_client.conversation_profile_path(
        project_id, conversation_profile_id
    )
    conversation = {"conversation_profile": conversation_profile_path}
    response = client.create_conversation(
        parent=project_path, conversation=conversation
    )

    print("Life Cycle State: {}".format(response.lifecycle_state))
    print("Conversation Profile Name: {}".format(response.conversation_profile))
    print("Name: {}".format(response.name))
    return response

エンドユーザーの参加者を作成する

候補を表示するには、エンドユーザーと人間のエージェントの両方の参加者を会話に追加する必要があります。まず、エンドユーザーを会話の参加者に追加します。

REST

エンドユーザーの参加者を作成するには、 create メソッドを Participant リソースで呼び出します。

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

  • PROJECT_ID: クラウド プロジェクト ID
  • LOCATION_ID: 地域 ID
  • CONVERSATION_ID: 会話 ID

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

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

{
  "role": "END_USER",
}

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

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "END_USER"
}

participants の後のパスセグメントには、新しいエンドユーザー参加者 ID が含まれます。

Python

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

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

人間のエージェントの参加者を作成する

人間のエージェントの参加者を会話に追加します。

REST

人間のエージェントの参加者を作成するには、 create メソッドを Participant リソースで呼び出します。

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

  • PROJECT_ID: クラウド プロジェクト ID
  • LOCATION_ID: 地域 ID
  • CONVERSATION_ID: 会話 ID

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

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

{
  "role": "HUMAN_AGENT",
}

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

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "HUMAN_AGENT"
}

participants の後のパスセグメントには、新しい人間のエージェントの参加者 ID が含まれます。

Python

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

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

エンドユーザーからのメッセージを追加して提案を取得する

エンドユーザー メッセージを会話に追加して分析するには、 analyzeContent メソッドを Participant リソースで呼び出します。レスポンスには、次のデータを含む dialogflowAssistAnswers フィールドが含まれます。

  • fulfillmentText: 推奨されるレスポンスが含まれます。この候補を人間のエージェントに提示するようにシステムを構成できます。
  • answer record: 候補の一意の ID。

候補を選択する

人間のエージェントは、候補を受け取ったときに、そのまま受け入れることも、編集してからエンドユーザーに渡すこともできます。候補を選択するには、人間のエージェントの参加者を使用して analyzeContent を再度呼び出します。suggestionInput フィールドを選択した設定に設定し、以前に受け取った answer record を指定します。text override フィールドには、エンドユーザーに送信される実際のテキストが含まれている必要があります。次に、suggestionInput フィールドを構成する例を示します。

{
  "answerRecord": "answer-record",
  "textOverride": {
    "text" : "Yes, there will be ponies.",
    "languageCode": "en-US"
  }
}

会話を完了する

会話が終わったら、API を使用して会話を完了します。

REST

会話を完了するには、 complete メソッドを conversations リソースで呼び出します。

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

  • PROJECT_ID: GCP プロジェクト ID
  • CONVERSATION_ID: 会話の作成時に受け取った ID

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID:complete

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

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

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "COMPLETED",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z",
  "endTime": "2018-11-06T03:50:26.930Z"
}

Python

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

def complete_conversation(project_id, conversation_id):
    """Completes the specified conversation. Finished conversations are purged from the database after 30 days.

    Args:
        project_id: The GCP project linked with the conversation.
        conversation_id: Id of the conversation."""

    client = dialogflow.ConversationsClient()
    conversation_path = client.conversation_path(project_id, conversation_id)
    conversation = client.complete_conversation(name=conversation_path)
    print("Completed Conversation.")
    print("Life Cycle State: {}".format(conversation.lifecycle_state))
    print("Conversation Profile Name: {}".format(conversation.conversation_profile))
    print("Name: {}".format(conversation.name))
    return conversation