チェックポイント
Create a Dialogflow agent
/ 10
Import the Dialogflow agent
/ 10
Set up a phone gateway
/ 20
Welcome the caller
/ 10
Set up fulfillment using Cloud Functions
/ 20
Modify the Fulfillment Code
/ 20
Create custom fallback intent
/ 10
仮想エージェントに Phone Gateway を追加する
GSP793
概要
このラボでは「仮想エージェント フルフィルメントの構築」ラボで作成した Pigeon Travel 仮想エージェントを引き続き使用し、Phone Gateway を追加して仮想エージェントを呼び出せるようにします。必須ではありませんが、あらかじめ「エージェント向けの会話フローの設計」ラボを受講しておくことをおすすめします。
Contact Center AI は、既存の電話通信テクノロジーに簡単に統合できるように設計されています。Phone Gateway を作成するにはテレフォニー パートナーにアクセスする必要があります。このラボでは、利用できるパートナーを用意しています。本番環境では、これらのいずれかのパートナーを利用することをおすすめします。
学習目標
このラボでは、次の方法について学びます。
- Default Welcome Intent を更新する
- ユーザーが仮想エージェントに発信できるように Phone Gateway を追加する
- Phone Gateway を使用してユーザーを転送する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。
-
[ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。
重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後このタブで Cloud Console が開きます。
API を有効にする
-
Cloud コンソールで、ナビゲーション メニュー > [API とサービス] > [有効な API とサービス] の順に移動します。
-
[+ API とサービスの有効化] をクリックします。
-
Dialogflow を検索します。
-
[Dialogflow API] をクリックし、API が有効でない場合は、[有効にする] をクリックします。
タスク 1. Dialogflow エージェントを作成する
エージェントに「pigeon-travel」という名前を付けます。
-
Dialogflow コンソールに移動します。
-
[Sign-in with Google] ボタンをクリックし、このラボにログインしたときの認証情報を選択します。
-
利用規約を確認し、[ACCEPT] をクリックします。
-
[CREATE AGENT] をクリックします。
-
エージェントの情報を追加します。
- Agent Name(エージェント名):
pigeon-travel
- Default Time Zone(デフォルトのタイムゾーン):
America/Denver
- Google Project(Google のプロジェクト): ラボのプロジェクト ID を使用
- Agent Name(エージェント名):
-
[CREATE] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2. Dialogflow エージェントをインポートする
前のラボでは、作成した Dialogflow エージェントをエクスポートしました。今回は、そのエージェントをインポートして、作成作業を続けます。
使用するファイルをエクスポートしていない場合は、こちらのファイル pigeon-travel-gsp-793.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. 発信者を歓迎する
Phone Gateway エージェントが使えるようになったので、インポートしたインテントを確認します。これは、独自の Phone Gateway エージェントを構築する方法を理解するのに役立ちます。
以下の手順に従って発信者を迎え、利用可能なオプションのリストを提示します。
-
Dialogflow コンソールに移動します。
-
エージェントを選択します。
-
[Intents] をクリックします。
-
[Default Welcome Intent] をクリックします。
-
[Events] セクションまで下にスクロールします。Welcome (WELCOME) イベントと Telephony Welcome (TELEPHONY_WELCOME) イベントがあります。Telephony Welcome (TELEPHONY_WELCOME) がない場合は追加してください。[Events] セクションで「Telephony Welcome」と入力し、Enter キーを押します。
Telephony Welcome (TELEPHONY_WELCOME) イベントは、あらゆる種類の歓迎イベントがこのインテントをトリガーすることを意味します。これ以外の方法として、歓迎イベントごとに専用のインテントを作成することもできます。
- [Responses] セクションまで下にスクロールし、プラスアイコンをクリックして [DIALOGFLOW PHONE GATEWAY] タブを追加します。
-
[ADD RESPONSES] をクリックして [Synthesize Speech] を選択します。
-
テキスト フィールドに次のように入力します。
Hello! I am the virtual agent for Pigeon Travel. I can help you with many things such as changing your name on your reservation. How can I help you?
- [Use responses from the DEFAULT tab as the first response] を無効にします。
-
[SAVE] をクリックします。
-
ここで番号に電話をかけて、カスタマイズされたレスポンスを聞くことができます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 5. Cloud Functions を使用してフルフィルメントを設定し、Firestore で予約を検索できるようにする
このセクションでは、現在の予約を参照して変更を加える Firestore をエージェントに設定します。
Firestore を設定する
-
コンソールで、ナビゲーション メニュー > [Datastore] の順に移動します。
-
[データベースを作成] をクリックします。
-
ネイティブ モードと Datastore モードという 2 つのオプションが表示されます。[ネイティブ モードを選択] を選択します。
-
ロケーションとして
を選択します。 -
[データベースを作成] をクリックします。完了すると、新しいコレクションを作成できるようになります。
-
[コレクションを開始] をクリックします。
-
コレクション ID:
reservations
-
ドキュメント ID:
100
-
-
次のように詳細を入力し、[保存] をクリックします。
- フィールド名: fname
- フィールド タイプ: string
- フィールド値: Isabel
[+ フィールドを追加] ボタンをクリックして別のフィールドを追加します。
- フィールド名: lname
- フィールド タイプ: string
- フィールド値: Costa
[+ フィールドを追加] ボタンをクリックして別のフィールドを追加します。
- フィールド名: newname
- フィールド タイプ: string
- フィールド値:
-
[保存] をクリックします。
Firestore コレクションに最初のドキュメントを追加しました。
Firestore ドキュメント ID のベストプラクティス
-
ドキュメント ID に「.」と「...」は使用しないでください。
-
ドキュメント ID に 「/」(スラッシュ)は使用しないでください。
-
次のように、単調に増加するドキュメント ID を使用しないでください。
- Customer1、Customer2、Customer3、...
- Product 1、Product 2、Product 3、...
このように連続した ID を使用すると、レイテンシに影響を与えるホットスポットが生じる可能性があります。
Dialogflow のフルフィルメント
-
Cloud コンソールで Cloud Functions に移動します。
-
[ファンクションを作成] をクリックします。
-
[環境] には、
1st gen
を使用します。 -
[関数名] には、
dialogflowFirebaseFulfillment
を使用します。 -
[リージョン] には、
を使用します。 -
[トリガー] には、
HTTP
を使用します。[認証が必要] チェックボックスをオンにし、[HTTPS が必須] を選択します。 -
[保存]、[次へ] の順にクリックします。
前のラボでは、Cloud Function のソースコードをダウンロードしましたが、ここでは、新しくデプロイした Cloud Function にそのコードをアップロードします。
- 使用するファイルをエクスポートしていない場合は、こちらのファイル pigeon-travel-gsp-793-cloud-function.zip を使用してください。
-
[コード] ページの [ランタイム] で、
Node.js 10
を選択します。 -
[ソースコード] プルダウンから、[Cloud Storage の ZIP] を選択します。
-
[Cloud Storage の ZIP] に場所
qwiklabs-resources-ccai-quest/pigeon-travel-gsp-793-cloud-function.zip
を入力します。 -
[エントリポイント] には
dialogflowFirebaseFulfillment
を使用します。
- [デプロイ] をクリックします。
完了すると、前のラボで作成したコードがフルフィルメントの Cloud ファンクションにデプロイされます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 6. 電話をかける
- 次に、ご自身の電話から Phone Gateway にアサインされた番号へ発信します。
ウェルカムメッセージが終わったら、会話フローを開始し、仮想エージェントに予約の名前を変更するように依頼します。すべて正常に行われると、仮想エージェントに伝えた名前が Firestore に表示されます。
タスク 7. ライブ対応のエージェントに切り替える
処理が正常に行われない場合や、予約番号が間違っている場合は、Dialogflow Phone Gateway Transfer Call オプションを使用します。
始める前に、イベントを使用してインテントをトリガーするため、イベントについて簡単に説明します。
イベント
通常は、エンドユーザー表現がインテントのトレーニング フレーズと一致した場合にインテントが一致します。ただし、イベントを使用してインテントをトリガーすることもできます。イベントはさまざまな方法で呼び出せます。
イベントには、以下の 2 つのタイプがあります。
-
プラットフォーム イベント: これらの組み込みイベントはプラットフォーム統合によって提供されます。これらのイベントは、プラットフォーム固有のイベントが発生すると呼び出されます。たとえば FACEBOOK_LOCATION イベントは、エンドユーザーが自分の位置情報に対するリクエストを承認または拒否すると、Facebook 統合によって呼び出されます。
-
カスタム イベント: ユーザーが定義するイベントです。フルフィルメントまたは API のいずれかを使用して、これらのイベントを呼び出せます。たとえば、会話中に時間指定アラートを設定して、特定の時間にイベントを呼び出せます。このイベントで、なんらかの警告をエンドユーザーに出すインテントをトリガーできます。
ここでは、電話転送をトリガーするためにカスタムイベントを使用します。
フルフィルメント コードを変更する
-
[関数の詳細] ページで、[編集] をクリックします。
-
[コードエディタ] タブに移動します。
-
以下のコードを
agent.add(''I could not find your reservation.');
次のように置き換えてデプロイします。
- 以下のコードを
console.log('Transaction failure:', error);
次のように置き換えます。
- 以下のコードを
agent.add('Error reading entry from the Firestore database.');
次のように置き換えます。
関数は次のようになります。
- [デプロイ] をクリックします。
agent.setFollowupEvent('custom_fallback');
コードは、インテントに関連付けられている custom_fallback イベントをトリガーします。インテントを作ってみましょう。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 8. カスタム フォールバック インテント
予約が見つからない場合や Firestore に接続する際にエラーが起きた場合に、カスタム フォールバック インテントがトリガーされ、ライブ対応のエージェントに転送されます。
カスタム フォールバック インテントを使用するには custom-fallback
インテントを作成します。
-
左側のメニューで Intents の横にある ➕ をクリックします。
-
[Intent name] テキスト フィールドにインテントの名前として「custom-fallback」を追加します。
-
[Events] セクションに以下を追加して、Enter キーを押します。
custom_fallback
-
[Responses] セクションの [Text Responses] に「
I'm sorry, I'm not able to find your reservation, but you'll be connected to a live person in a moment.
」というレスポンスを入力します。 -
[Default] の横にある ➕ をクリックして [DIALOGFLOW PHONE GATEWAY] を追加します。
-
[DIALOGFLOW PHONE GATEWAY] タブで [ADD RESPONSES] をクリックして [Synthesize Speech] を選択します。
-
[Synthesize Speech] に「
申し訳ありませんがお客様の予約が見つかりません。すぐに担当者におつなぎします。
」というレスポンスを入力します。 -
[DIALOGFLOW PHONE GATEWAY] タブで [ADD RESPONSES] をクリックして [Transfer Call] を選択します。
-
ライブ対応のエージェントと話す必要があるイベントが発生したときに、Dialogflow が転送できる番号を入力します。
-
[Set this intent as end of conversation] を有効にします。
-
[Save] ボタンをクリックします。画面の右下に「Agent Training started」や「Agent Training completed」というメッセージが表示されることがあります。これは、追加したフレーズに基づいて Dialogflow がエージェント モデルを再トレーニングしていることを示しています。
-
トレーニングが完了したら電話を使ってみましょう。保存した番号へ発信します。今回は、仮想エージェントに間違った予約番号を伝えます。
エージェントは「I'm sorry I'm not able to find your reservation but you'll be connected to a live person in a moment.
」と回答し、設定した電話番号に転送します。
仕組み
- 仮想エージェントは Firestore で予約番号を探します。
if (!doc.exists)
-
doc
が見つからなかった場合は、以下のイベントをトリガーします。
agent.setFollowupEvent('custom_fallback');
- イベントはインテントに関連付けられており、このインテントによって、Dialogflow がレスポンスを読み上げて通話を転送します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 9. (オプション)コードをエクスポートする
作業内容をエクスポートして、次のラボで使えるようにします。[Cloud Functions] の下の [ソース] タブをクリックすると、[zip をダウンロード] ボタンが表示されます。
エージェントをエクスポートする
ここでは、エージェントを zip 形式のファイルにエクスポートし、次のラボを開始するときにインポートできるようにします。これにより、これまでに構成したインテントとエンティティを再利用することができるようになります。
-
左側のメニューでエージェント名の横にある設定(歯車)アイコン ⚙ をクリックします。
-
設定ページが開いたら、[Export and Import] タブに移動します。
-
[EXPORT AS ZIP] をクリックします。エージェントがローカル zip ファイルにダウンロードされます。
お疲れさまでした
Phone Gateway を追加してユーザーが仮想エージェントに発信できるようにしました。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 10 月 18 日
ラボの最終テスト日: 2023 年 10 月 18 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。