チェックポイント
Create a Dialogflow agent
/ 20
Import your Dialogflow agent
/ 20
Set up a phone gateway
/ 20
Set up fulfillment using Cloud Functions
/ 20
Create an entity and an intent
/ 20
オペレーション スイートでの Dialogflow のロギングとモニタリング
GSP794
概要
このラボでは、「仮想エージェントに Phone Gateway を追加する」ラボで作成した Pigeon Travel 仮想エージェントを引き続き使用します。ここでは、Google Cloud ツールを使用して仮想エージェントのトラブルシューティングとデバッグを行う方法を学びます。
Contact Center AI は、既存の電話通信テクノロジーに簡単に統合できるように設計されています。Phone Gateway を作成するにはテレフォニー パートナーを利用する必要があり、このラボではそうしたパートナーを利用できます。本番環境では、こちらのいずれかのパートナーを利用してください。
学習内容
このラボでは、次のタスクを行います。
- Dialogflow ツールを使用してトラブルシューティングを行う。
- Google Cloud ツールを使用して、仮想エージェントのデバッグを行う。
- 仮想エージェントのアクティビティによって生成されたログを確認する。
- ベスト プラクティスに沿って会話を設計する。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
API を有効にする
-
Cloud コンソールで、ナビゲーション メニュー > [API とサービス] > [有効な API とサービス] に移動します。
-
[+ API とサービスの有効化] をクリックします。
-
Dialogflow を検索します。
-
[Dialogflow API] をクリックし、API が有効でない場合は、[有効にする] をクリックします。
-
Cloud function を検索します。
-
[Cloud Functions API] をクリックし、すでに有効になっている場合は [管理] をクリックします。
-
[API を無効にする] をクリックします。
確認を求められたら、[無効にする] をクリックします。
-
[有効にする] をクリックします。
API が再度有効になると、ページに無効にするオプションが表示されます。
IAM 権限を設定する
-
ナビゲーション メニュー()で、[IAM と管理] > [IAM] に移動します。
-
IAM リストで Google Cloud Functions サービス エージェントを見つけ、鉛筆アイコンを選択して権限を編集します。サービス アカウントのドメインは
@gcf-admin-robot.iam.gserviceaccount.com
になります。 -
サービス アカウントが表示されない場合は、[Google 提供のロール付与を含める] チェックボックスをオンにします。
-
ダイアログで [別のロールを追加] をクリックし、[Artifact Registry] > [Artifact Registry 読み取り] のロールを選択します。
-
[保存] をクリックします。
タスク 1. Dialogflow エージェントを作成する
エージェントに「pigeon-travel」という名前を付けます。
-
Dialogflow コンソールに移動します。
-
[Sign-in with Google] ボタンをクリックし、このラボにログインしたときの認証情報を選択します。[Allow] をクリックします。
-
利用規約に同意します。
-
[CREATE AGENT] をクリックします。
-
次のようにエージェント情報を追加します。
- Agent Name:
pigeon-travel
- Default Time Zone:
America/Denver
- Google Project: Qwiklabs のプロジェクト ID を使用
- Agent Name:
-
[CREATE] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
タスク 2. Dialogflow エージェントをインポートする
前のラボでは、作成した Dialogflow エージェントをエクスポートしました。今回は、そのエージェントをインポートして、作成作業を続けます。
使用するファイルをエクスポートしていない場合は、こちらのファイル pigeon-travel-gsp-794.zip を使用してください。
ファイルをローカル ワークステーションにダウンロードします。
新しい仮想エージェント プロジェクトが作成されます。ここで、既存の構成をインポートする必要があります。
-
エージェント名の横にある設定の歯車アイコン()をクリックします。
-
[Export and Import] タブを選択します。
-
[IMPORT FROM ZIP] をクリックします。
-
[SELECT FILE] をクリックして、仮想エージェントの構成が含まれる zip ファイルに移動します。または、ファイルをドラッグ&ドロップして指定することもできます。
-
「IMPORT」という単語をすべて大文字で入力してインポート ボタンを有効にし、[IMPORT] をクリックします。
- インポートが完了したら、[DONE] をクリックしてアップロード ウィンドウを閉じます。
既存の構成が新しいエージェント プロジェクトにインポートされました。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
タスク 3. Phone Gateway を設定する
ゲートウェイを設定する手順は次のとおりです。
-
プロバイダを選択します。Dialogflow コンソールで次の操作を行います。
-
pigeon-travel
エージェントを選択します。 - [Integrations] をクリックします。
- [Dialogflow Phone Gateway] をクリックします。
-
-
Phone Gateway を構成します。
- 言語を選択します。このラボでは [English] を使用します。
- 電話番号の国コードを選択します。このラボでは米国の国コード [+1] を使用します。
- [Next] をクリックします。
-
番号を選択します。
- リストから電話番号を選択します。
- [Create] をクリックします。
-
完了した割合:
- ゲートウェイがアクティブになりました。
- 表示された電話番号を保存し、ダイアログ ウィンドウを閉じます。Dialogflow Phone Gateway の統合ボタンをもう一度クリックすると、この情報を取得できます。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
タスク 4. Cloud Functions を使用してフルフィルメントを設定し、Firestore で予約を検索できるようにする
このセクションでは、現在の予約を参照して変更を加える Firestore をエージェントに設定します。
Firestore を設定する
-
Cloud コンソールで、ナビゲーション メニュー > [データベース] > [Firestore] に移動します。
-
[データベースを作成] をクリックします。
-
ネイティブ モードと Datastore モードという 2 つのオプションが表示されます。[ネイティブ モード] を選択し、[続行] をクリックします。
-
ロケーションとして [nam5 (United States)] を選択します。
-
[データベースを作成] をクリックします。完了すると、新しいコレクションを作成できるようになります。
-
[コレクションを開始] をクリックします。
-
次のように詳細を入力し、[保存] をクリックします。
-
コレクション ID:
reservations
-
ドキュメント ID:
100
-
フィールド名: fname
-
フィールド タイプ: string
-
フィールド値: Isabel
次に、[+] ボタンをクリックしてもう 1 つ追加します。
- フィールド名: lname
- フィールド タイプ: string
- フィールド値: Costa
[+] ボタンをクリックしてもう 1 つ追加します。
- フィールド名: newname
- フィールド タイプ: string
- フィールド値: 空白のまま
-
Firestore コレクションに最初のドキュメントを追加しました。
Firestore ドキュメント ID のベスト プラクティス
-
次のようなドキュメント ID は使用しないでください。
-
ドキュメント ID に
/
(スラッシュ)は使用しないでください。 -
次のように、単調に増加するドキュメント ID を使用しないでください。
- Customer1、Customer2、Customer3、...
- Product 1、Product 2、Product 3、...
このように連続した ID を使用すると、レイテンシに影響を与えるホットスポットが生じる可能性があります。
Dialogflow のフルフィルメント
-
左側のメニューで [Fulfillment] をクリックします。リソースがプロビジョニングされるまで数分かかることがあります。
-
[Inline Editor] オプションの横にあるスライダーを右に動かして、[ENABLED] が表示されるようにします。これにより、Dialogflow エージェント内で Cloud Functions エディタが使用可能になります。
-
右下にある [Deploy] ボタンをクリックします。これには数分かかることがあります。
-
デプロイが成功したら、Cloud コンソールでナビゲーション メニューから [Cloud Functions] に移動し、関数がデプロイされたことを確認します(ステップ 4 で表示された名前を探します)。
-
前のラボでは、Cloud Functions 関数のソースコードをダウンロードしました。ここでは、新しくデプロイした Cloud Functions 関数にそのコードをアップロードします。
エクスポートしたファイルがない場合は、ローカル ワークステーションにこちらのファイルをダウンロードしてください。
-
Cloud コンソールで、新しくデプロイした関数を探し、関数名をクリックして開きます。
-
[編集] をクリックします。
-
[次へ] をクリックして [ソースコード] を [ZIP アップロード] に設定します。
-
[転送先バケット] を選択します。バケットがない場合は、先へ進んで新しいバケットを作成します。
-
前のラボか、前のステップでダウンロードした ZIP(Cloud Functions 関数のソースコード)を参照します。
- [デプロイ] をクリックします。
完了すると、前のラボで作成したコードがフルフィルメントの Cloud Functions 関数にデプロイされます。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
タスク 5. Dialogflow のトラブルシューティング用ツール
トラブルシューティングとデバッグに使用できるツールがあります。
- Dialogflow の履歴
- Cloud Logging
Dialogflow の履歴とは
[History] ページには、エージェントが関与した会話の簡略バージョンが表示されます。時系列になっているこれらのログでは、ユーザーとエージェントとのやり取りを大まかに把握することができます。
Dialogflow の履歴の使用方法
- 一致しないインテントを修正する
- インタラクションのログを表示する
- 会話を表示する
- Operations ログに記録される Webhook エラーを確認する
タスク 6. 一致しないインテントを修正する
インテント マッチングで問題が発生したインタラクションには、黄色の警告アイコンが表示されます。一方、Webhook エラーが発生したインタラクションには、赤色の警告アイコンが表示されます。
-
Dialogflow コンソールのメニューで [History] をクリックします。
-
一覧表示されているインタラクションのオプション アイコンをクリックすると、トラブルシューティングのオプションが表示されます。
- Go to intent - このオプションを使用して、一致したインテントに直接移動できます。一致したインテントがない場合、このオプションは使用できません。
- このオプションを使用してインテントに移動し、インテントが今後一致するよう、トレーニング フレーズをインテントに追加できます。
- Dialogflow シミュレータで次のように入力します。
I need to update my last name
-
これは Default Fallback Intent にフォールバックされます。
-
Dialogflow コンソールのメニューで [History] をクリックします。
-
先ほど入力したフレーズを見つけてクリックします。フレーズが開き、警告が表示されます。
このエージェントは一致するインテントを見つけることができませんでした。これを修正するには、インテントにフレーズを追加します。
-
[Intents] をクリックします。
-
name.reservation インテントをクリックします。
-
[Training Phrases] に移動し、「
I need to update my last name
」と入力します。 -
[Save] をクリックします。
-
Dialogflow シミュレータで同じフレーズをもう一度試します。
-
今度はインテントに一致します。
タスク 7. ロギングでの Webhook エラー
ログを表示するには、エージェントでログを有効にする必要があります。
-
設定アイコン > [General] タブで、[LOG SETTINGS] セクションまでスクロールし、[Log Interactions to Google Cloud] を有効にします。
-
[Open logs] リンクをクリックします。
-
[Save] をクリックします。
Webhook でエラーが発生すると、そのインタラクションには赤色の警告エラーアイコンが表示されます。アイコンにカーソルを合わせると、エラーの簡単な説明が表示されます。
そのインタラクションに関する特定のログブロックを表示するには、オプション アイコンをクリックし、[View logs in Operations] をクリックします。
-
Cloud コンソールに移動し、[Cloud Functions] をクリックします。
-
Dialogflow の関数 をクリックします。
-
[編集]、[次へ] の順にクリックします。
-
INDEX.JS を次のように編集します。
下の方にある次のコード行をコメントアウトします。
intentMap.set('name.reservation-getname', reservation);
この行を次のように変更します。
// intentMap.set('name.reservation-getname', reservation);
-
[デプロイ] をクリックします。
-
Dialogflow シミュレータで会話を開始して次のように入力します。
I need to update my last name
-
Dialogflow コンソールで [History] に移動します。
-
先ほど開始した会話を見つけ、クリックして詳細を展開します。
-
エージェントとの最新のインタラクションが空欄になっています。
-
オプション メニューで [View logs in Operations] をクリックします。
-
「Dialogflow fulfillment error : Webhook call failed. Error: UNAVAILABLE, State: URL_UNREACHABLE, Reason: UNREACHABLE_5xx, HTTP Status code: 500.」というエラーが表示されます。
このメッセージをトラブルシューティングするために必要な情報が不足しています。
- [Clear query] をクリックして [Query] フィールドをクリアし、[Run Query] をクリックします。
下の方に「Error: No handler for requested intent」というメッセージが表示されています。これは先ほどコメントアウトした intentMap に関連するエラーです。
このエラー メッセージが表示されていない場合は、正しいリソースを選択しているかどうか確認してください。[Resource] を [Cloud Function > dialogflowFirebaseFulfillment] に変更できます。
タスク 8. ベスト プラクティス
トレーニング フレーズ
-
十分な数のトレーニング フレーズがあることを確認します。1 つのインテントに対して少なくとも 10 個のトレーニング フレーズを作成することをおすすめします。
-
各トレーニング フレーズには、インテントをトリガーするさまざまな表現を含むようにします。
-
また、トレーニング フレーズには、似たような意味の言い回しも含むようにします。
インテントの優先度
複数のインテントが類似する場合、インテントごとに優先度を設定できます。エンドユーザー表現が複数のインテントと一致する場合、Dialogflow は最も優先度の高いインテントと照合します
コンソールではなく API を使用してエージェントを作成する場合は、インテントのリファレンスをご覧ください。API のフィールド名はコンソールのフィールド名と同様です。負の優先度値は、コンソールの Ignore 優先度に対応し、ランタイム インテント検出リクエストのインテントを無効にするために使用されます。
ユーザー入力と「完全」に一致するトレーニング フレーズがインテントに含まれる場合には、Priority と Input Context が設定されていても、ユーザー入力と「完全」に一致するインテントが複数のインテントからトリガーされます。インテントが「完全」に一致するということは、インテントとコンテキストがユーザーが意図するものとまったく同じであることを示し、最も優先度の高いインテントとして処理されます。
-
左側のメニューで [Intents] をクリックします。
-
name.reservation
インテントをクリックします。 -
左上に表示される青い点をクリックして、インテントの優先度を変更します。
エンティティの用語
「エンティティ」という用語は、Dialogflow コンソールでエンティティの一般的なコンセプトを説明する目的で使用されています。
-
エンティティ タイプ: ユーザー入力から抽出する情報のタイプを定義します。たとえば、「野菜」はエンティティ タイプの名前になり得ます。
-
エンティティ エントリ: エンティティ タイプごとに多数のエンティティ エントリがあります。各エンティティ エントリには、同等と見なされる単語または句のセットが含まれています。たとえば、エンティティ タイプが野菜の場合、次の 3 つのエンティティ エントリを定義できます。
- ニンジン
- シャロット、長葱
- ピーマン、パプリカ
-
カスタム エンティティには、エージェントごとに固有の名前を付けます。エンティティ名は、英字で開始しなければなりません。その後には A-Z、a-z、0-9、_(アンダースコア)、-(ダッシュ)を使用できます。
-
同じエンティティ エントリがあるエンティティが「矛盾しない」インテントに使われるように注意してください。インテントには明確に区別できるトレーニング フレーズを使用し、異なる入力コンテキストによってインテントを限定できるようにする必要があります。
カスタムマップ エンティティを作成するには以下の手順を行います。
- 左側のメニューで [Entities] をクリックします。
- [Create entity] をクリックします。
- エンティティの名前「
shirt-size
」を入力します。 - Define synonymsはすでに選択されていることにご注意ください。
- 最初の行をクリックし、左側の列に参照値を入力します。
- 次の列をクリックするか、Enter キーを押して類義語を入力します。
- 他のエンティティ エントリの行を引き続き追加します。
- [Save] をクリックします。
-
get-shirt-size
というインテントを作成します。 -
左側のメニューで Intents の横にある ➕ をクリックします。
-
[Intent name] テキスト フィールドに「get-shirt-size」という名前を入力します。
-
[Training Phrases] セクションの [Add Training Phrases] をクリックし、次の各トレーニング フレーズを入力し、それぞれの入力後に Enter キーを押します。
- XL
- XS
- M
- L
- S
- XXL
- [Text Response] に次のレスポンスを入力します。
Thank you, I will ship out a $shirt-size shirt to the address we have on file, thank you.
- [Save] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
-
Cloud コンソールに移動し、[Cloud Functions] をクリックします。
-
Dialogflow の関数を選択します。
-
[編集] ボタンをクリックします。
-
INDEX.JS を次のように編集します。
- 次のコード行のコメント化を解除します。
intentMap.set('name.reservation-getname', reservation);
- 35 行目付近で次のようにコードを変更します。
agent.add('Ok. I have updated the name on the reservation');
これを、次のように変更します。
agent.add('Ok. I have updated the name on the reservation. I want send you a free T-Shirt as thank you. What shirt size are you?');
-
[デプロイ] をクリックします。
-
Cloud ファンクションをデプロイしたら、Dialogflow シミュレータでテストします。次のように入力してください。
I need to update my last name
Isabel
100
Isabella
XL
初めてのテストで正しく動作しない場合は、ファンクションがまだ更新中である可能性があるので、もう一度試してください。
エージェントの検証
Dialogflow には検証機能があり、エージェント設計者が高品質のエージェントを作成できるようになっています。エージェントの検証結果は、エージェントのトレーニングが実行され、完了したときに、自動的に提供されます。検証の結果には、Dialogflow コンソールや API からアクセスできます。
検証結果には、エージェントの品質とパフォーマンスの改善に向けて修正を要するエラーのリストが表示されます。エージェントにエラーがある場合も、無視してエージェントを起動できます。例の一部を紹介します。
- インテントに類似性の高いトレーニング フレーズが存在する。
- インテントにはトレーニング フレーズで十分に使用されていないパラメータが含まれている。
- フォールバック インテントにはネガティブ サンプルが存在しない。
- このテキストは、トレーニング フレーズによって注釈が付けられるかどうかが一定しない。
自動検証の有効化と無効化
デフォルトでは、エージェントがトレーニングを受けるたびにエージェントの検証が自動的に実行されます。この設定の有効と無効を切り替えるには、Dialogflow コンソールで次の手順を行います。
- エージェントを選択します。
- エージェント名の横にある設定アイコンをクリックします。
- [ML Settings] タブをクリックします。
- [Agent Validation] の設定のオン(デフォルト)とオフを切り替えます。
エージェントの検証データにアクセスするには、次の手順を行います。
- Dialogflow コンソールに移動します。
- エージェントを選択します。
- サイドバーのメニューの [Validation] をクリックします。
インテント リストまたはエンティティ リストのページを表示すると、検証エラーがあるインテントやエンティティの名前の横にエラー インジケーターが表示されます。
検証エラーがある特定のインテントやエンティティのページにアクセスすると、エラー error_outline
インジケーターが [Save] ボタンの近くに表示されます。
このボタンをクリックすると、そのインテントまたはエンティティのエラーのリストが表示されます。 デフォルトでは、重大度が CRITICAL または ERROR のエラーのみが表示されます。重大度の種類を切り替えて、WARNING と INFO を表示することもできます。
お疲れさまでした
Google Cloud ツールを使用して仮想エージェントのトラブルシューティングとデバッグを行う方法を学習しました。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 6 月 28 日
マニュアルの最終テスト日: 2024 年 6 月 28 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。