Dialogflow 仮想エージェント

必要に応じて、Dialogflow 仮想エージェントとエンドユーザー間の会話を作成できます。仮想エージェントは、顧客との会話を独自に解決しようとしてから、人間のエージェントにエスカレーションします。仮想エージェントなしで Agent Assist を使用する場合、エンドユーザーは最初に仮想エージェントとやり取りすることなく、人間のエージェントに直接送信されます。

始める前に

  1. Dialogflow の基本をご覧ください。
  2. 手順に沿って設定してください。
  3. Dialogflow ES または Dialogflow CX を使用してエージェントを作成します。Agent Assist シミュレータを使用してこの仮想エージェントをテストする場合、仮想エージェントは Dialogflow ES エージェントである必要があり、また Agent Assist コンソールで使用する予定の同じ GCP プロジェクトに関連付けられている必要があります。シミュレータを使用して仮想エージェントをテストする予定がない場合は、エージェントは ES または CX エージェントとすることができ、任意の GCP プロジェクトに関連付けることができます。

エージェントにサンプル ファイルをインポートする

このガイドの手順でエージェントの前提条件を設定するため、このガイド用に準備されたエージェントをインポートする必要があります。インポート時に、この手順では restore オプションが使用されます。これにより、すべてのエージェント設定、インテント、エンティティが上書きされます。

ファイルをインポートする手順は次のとおりです。

  1. room-booking-agent.zip ファイルをダウンロードします。
  2. Dialogflow ES コンソールに移動します。
  3. エージェントを選択します。
  4. エージェント名の横にある設定 ボタンをクリックします。
  5. [Export and Import] タブを選択します。
  6. [Restore from Zip] を選択し、手順に従ってダウンロードした zip ファイルを復元します。

Dialogflow エージェントを構成する

このセクションでは、会話プロファイルを作成して構成する方法について説明します。会話プロファイルでは、会話中にエージェントに提示される提案を制御する一連のパラメータを構成します。

会話プロファイルを作成する

会話を作成する前に、会話プロファイルを作成する必要があります。会話プロファイルは、会話用のエージェントと接続サービスを構成するために使用します。以下の手順では、API を使用して、上記の手順で作成した Dialogflow エージェントで会話プロファイルを作成します。別の方法として、Agent Assist コンソールを使用して会話プロファイルを作成することもできます。

REST とコマンドライン

会話プロファイルを作成するには、ConversationProfile リソースの create メソッドを呼び出します。

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

  • PROJECT_ID: GCP プロジェクト ID

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversationProfiles

JSON 本文のリクエスト:

{
  "displayName": "My Contact Center Solution",
  "automatedAgentConfig": {
    "agent": "projects/PROJECT_ID/agent/environments/-"
  }
}

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

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

{
  "name": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "displayName": "My Contact Center Solution",
  "automatedAgentConfig": {
    "agent": "projects/PROJECT_ID/agent/environments/-"
  }
}

conversationProfiles の後のパスセグメントには、新しい会話プロフィール ID が含まれます。

ランタイムに会話を処理する

会話を作成する

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

REST とコマンドライン

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

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

  • PROJECT_ID: GCP プロジェクト ID
  • CONVERSATION_PROFILE_ID: 会話プロファイルの作成時に受け取った ID

HTTP メソッドと URL:

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

JSON 本文のリクエスト:

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

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

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

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

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

参加者を作成する

次に、参加者を会話に追加する必要があります。会話に追加する必要がある参加者は、エンドユーザーだけです。

REST とコマンドライン

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

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

  • PROJECT_ID: GCP プロジェクト ID
  • CONVERSATION_ID: 会話 ID

HTTP メソッドと URL:

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

JSON 本文のリクエスト:

{
  "role": "END_USER",
}

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

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

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

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

コンテンツを分析して自動化されたレスポンスを受け取る

エンドユーザー参加者を作成したら、そのエンドユーザーから API に入力を送信できます。API が入力をインテント検出リクエストに送信し、レスポンスを返します。

REST とコマンドライン

テキストを送信するには、participants リソースの analyzeContent メソッドを呼び出します。

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

  • PROJECT_ID: GCP プロジェクト ID
  • CONVERSATION_ID: 会話 ID
  • PARTICIPANT_ID: エンドユーザーの参加者 ID

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

JSON 本文のリクエスト:

{
  "textInput": {
    "text": "I want to book a room",
    "languageCode": "en-US"
  }
}

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

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

{
  "replyText": "I can help with that. Where would you like to reserve a room?",
  "automatedAgentReply": {
    "detectIntentResponse": {
      "responseId": "38e5d378-12e5-453b-9c37-ac6828b86673",
      "queryResult": {
        "queryText": "I want to book a room",
        "action": "room.reservation",
        "parameters": {
          "date": "",
          "duration": "",
          "guests": "",
          "location": "",
          "time": ""
        },
        "fulfillmentText": "I can help with that. Where would you like to reserve a room?",
        "fulfillmentMessages": [
          {
            "text": {
              "text": [
                "I can help with that. Where would you like to reserve a room?"
              ]
            }
          }
        ],
        "intent": {
          "name": "projects/PROJECT_ID/agent/intents/e8f6a63e-73da-4a1a-8bfc-857183f71228",
          "displayName": "room.reservation"
        },
        "intentDetectionConfidence": 0.8,
        "languageCode": "en-us"
      },
      "webhookStatus": {}
    }
  }
}

会話を完了する

会話が終了したら、会話を終了して done とマークされていることを確認します。完了した会話は、一定期間後にクリーンアップされます。

REST とコマンドライン

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

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

  • 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"
}