必要に応じて、Dialogflow 仮想エージェントとエンドユーザー間の会話を作成できます。仮想エージェントは、顧客との会話を独自に解決しようとしてから、人間のエージェントにエスカレーションします。仮想エージェントなしで Agent Assist を使用する場合、エンドユーザーは最初に仮想エージェントとやり取りすることなく、人間のエージェントに直接送信されます。
始める前に
- Dialogflow の基本をご覧ください。
- 手順に沿って設定してください。
- Dialogflow ES または Dialogflow CX を使用してエージェントを作成します。Agent Assist シミュレータを使用してこの仮想エージェントをテストする場合、仮想エージェントは Dialogflow ES エージェントである必要があり、また Agent Assist コンソールで使用する予定の同じ GCP プロジェクトに関連付けられている必要があります。シミュレータを使用して仮想エージェントをテストする予定がない場合は、エージェントは ES または CX エージェントとすることができ、任意の GCP プロジェクトに関連付けることができます。
エージェントにサンプル ファイルをインポートする
このガイドの手順でエージェントの前提条件を設定するため、このガイド用に準備されたエージェントをインポートする必要があります。インポート時に、この手順では restore オプションが使用されます。これにより、すべてのエージェント設定、インテント、エンティティが上書きされます。
ファイルをインポートする手順は次のとおりです。
-
room-booking-agent.zip
ファイルをダウンロードします。 - Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- エージェント名の横にある設定 settings ボタンをクリックします。
- [Export and Import] タブを選択します。
- [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" }