この Codelab では、コードを記述せずに Dialogflow を使用して RBM エージェントを強化する会話型インターフェースを作成する方法を学びます。
この Codelab で作成するもの
- RBM エージェントの会話を強化する Dialogflow エージェント
- 架空のピザレストランの会話インターフェース。ユーザーに割引メニューを案内して、レストランのメニューを見ることができる。
学習する内容
- Dialogflow の会話の主なインターフェースの主な構成を使用して構成する方法
- ユーザーにリッチな RBM エクスペリエンスを提供するために、Dialogflow から RBM レスポンス タイプを作成する方法
必要なもの
- RBM プラットフォーム Google アカウント
最初のエージェントを作成してクエリを実行する
期間: 30 分
Dialogflow エージェントを作成する
Dialogflow エージェントを作成するには:
- 新しいタブを開き、Dialogflow にログインします。
左側のナビゲーションで [エージェントを作成] をクリックします。
エージェントの名前として「CodelabRBMPizzaPlace"」と入力し、デフォルトの言語として「English」を選択し、デフォルトのタイムゾーンをご自身のタイムゾーンに設定します。
[作成] をクリックします。
Dialogflow コンソール
Dialogflow コンソールを確認します。小さい画面で作業していて、左側のナビゲーションが非表示になっている場合は、左上のナビゲーション ボタンをクリックします。設定ボタンをクリックすると、現在のエージェントの設定が表示されます。
ページの中央には、エージェントのインテントのリストが表示されます。デフォルトでは、Dialogflow エージェントには最初から 2 つのインテントが含まれています。エージェントがユーザーの会話を理解できない場合、エージェントはデフォルトの代替インテントに一致します。Default Welcome Intent はユーザーに挨拶します。これらのインテントを変更して、エクスペリエンスをカスタマイズできます。
右側は Dialogflow のシミュレータです。これにより、話したり、メッセージを入力したりすることで、エージェントを試すことができます。
エージェントに問い合わせる
Dialogflow エージェントは、NLU(自然言語理解)モジュールとして記述するのが最善です。これらは、アプリ、プロダクト、サービスに含めて、自然なユーザー リクエストを実用的なデータに変換できます。
エージェントを試してみましょう。右側のシミュレータで、[今すぐ試す] と表示されているテキスト フィールドをクリックし、「Hi"」と入力して、Enter キーを押します。
Dialogflow はクエリを識別し、デフォルトのウェルカム インテントに一致し、一般的な挨拶で応答します。この動作は、Dialogflow がいくつかのサンプル応答メッセージで Default Welcome Intent を自動的にトレーニングするためです。
RBM エージェントの作成
Business Communications Developer Console にログインし、[エージェントを作成] をクリックします。
[名前] フィールドに「Your Pizza Place」と入力します。
RBM エージェントを Dialogflow に接続する
RBM エージェントが作成されたら、エージェントをクリックして、エージェントの [概要] ページを表示します。左側のナビゲーションにある [統合] リンクをクリックします。
デフォルトでは、RBM エージェントは Google Cloud Pub/Sub を使用してユーザー メッセージを処理します。RBM エージェントを先ほど作成した Dialogflow エージェントに接続するには、[Dialogflow] 統合をクリックします。
ダイアログで、[Connect existing model(既存のモデルを接続する)] をクリックします。指示に従って、RBM エージェントに Dialogflow エージェントを呼び出す権限を付与します。手順を完了したら、[次へ] をクリックします。
最後に、Dialogflow プロジェクト ID を指定する必要があります。Business Communications Developer Console とは別のブラウザタブで、Dialogflow に移動し、前の手順で作成した CodelabRBMPizzaPlace エージェントを開きます。左側のナビゲーションで、プロジェクト名の近くにある歯車アイコンをクリックします。
これをクリックすると、モデルの設定が表示されます。[GOOGLE PROJECT] で [Project ID] を探してコピーします。
Business Communications Developer Console を開いたタブに戻り、プロジェクト ID をダイアログに貼り付けて、[統合を開始] をクリックします。
このプロセスが完了するまでに約 2 分かかります。完了すると、Dialogflow の統合オプションがハイライト表示され、[エージェントを表示] リンクが表示されます。
エージェント間のすべてのメッセージが、CodelabRBMPizzaPlace Dialogflow エージェントによって処理されるようになりました。
テストデバイスを招待してメッセージを送信する
Dialogflow を設定する前に、テストデバイスをセットアップしましょう。RBM メッセージを受信できるデバイスをまだお持ちでない場合は、こちらのガイドに沿ってデバイスを準備してください。
Business Communications Developer Console で、左側のナビゲーションにある [デバイス] をクリックします。フォームにデバイスの完全な電話番号を E.164 形式で入力し(例: +12223334444)、追加をクリックします。
デバイスでテストの招待状が届きます。[自分をテスターにする] をタップします。
ブラウザで、[デバイス] リストからデバイスを見つけ、デバイスにテスト メッセージを送信します。RBM エージェントからデバイスにメッセージを受信した場合は、この Codelab を続行するように設定できます。
ウェルカム インテントを作成する
通常は、Dialogflow RBM エージェントで会話を開始するため、ユーザーの電話番号と会話を開始する Dialogflow インテント(通常はエージェントのウェルカム インテント)を指定する API 呼び出しを行います。この Codelab では、この手順をスキップし、代わりに Business Business Developer Console のテストデバイスで前に作成した会話スレッドを使用します。ただし、この API 機能の詳細については、こちらのガイドをご覧ください。
まず、RBM レスポンスを Default Welcome Intent に追加して、Dialogflow が RBM エージェントで使用できるようにします。まず、Dialogflow が開いているブラウザタブに移動します。左側のナビゲーションで [Intents] をクリックします。 右上のゴミ箱をクリックして、サンプルのプレーンなテキスト レスポンスを削除します。次に、[Default Welcome Intent] をクリックして [Responses] セクションまで下にスクロールし、レスポンス タイプのリストで [+] をクリックして、[RCS Business Messaging(RBM)] を選択します。
[Add Responses] をクリックし、[Simple Response] を選択します。[Simple Response] のテキスト フィールドに「Sean’s Pizza Place deal the day!」と入力します。12 インチのピザを購入しましょう。無料で 1 つ獲得できます。(Sean はご自分の名前で置き換えてください)、[保存] をクリックします。
会話の開始
ウェルカム インテントを構成したら、テストデバイスに戻り、「Hi"」というメッセージを送信します。このメッセージによって Default Welcome Intent がトリガーされ、次の画像のような画面が表示されます。
ウェルカム インテントを更新する
Dialogflow が単純なメッセージを送信したら、次はメッセージを更新してもっと説得力のあるものにしましょう。Google は、その日の取引に関するメッセージを送るだけでなく、相手の心をつかむような画像を送信したいとも考えています。
簡単な返信のピザ広告メッセージを、画像と、メニューとレストランのウェブサイトを表示するオプションを備えたカードに置き換えましょう。
[Default Welcome Intent] の [Responses] セクションで、[RCS Business Messaging(RBM)] タブを選択します。既存のシンプル レスポンス テキストを「Sean’s Pizza Place へようこそ」で更新します。本日のプロモーション特典をご確認ください。 [回答を追加] をクリックして [スタンドアロン リッチカード] を選択します。
[スタンドアロン] の [リッチカード] フォームに、次のように入力します。
- カードのタイトル: 12 インチのピザを購入してもう 1 品が無料にしましょう。
- カードの説明: この特典を利用するすべての地域でこのメッセージを表示します。この特典の有効期限は 2 月 17 日です
- カードの向きを選択: 縦
- 画像 / 動画の URL: https://storage.googleapis.com/df-rbm-codelab/pizza-ad-coupon.png
- メディアの高さを選択: 中
[候補を追加] をクリックして次のように入力します。
- 候補のテキスト: メニューを表示
- 返信ポストバック: reply_view_menu
[URL の操作を追加] をクリックし、プルダウンで [URL の操作を開く] を選択して以下の URL 操作を入力します。
- 提案テキスト: ウェブサイトを表示
- 返信ポストバック:reply_view_website
- 開く URL: https://www.google.com(または有効な任意の URL)
[保存] をクリックします。
試してみましょう。
モデルに「エージェントのトレーニングが完了しました」と表示されたら、デバイスに戻ってエージェントに「こんにちは」というメッセージを送信します。シンプル レスポンスと、先ほどデザインしたスタンドアロン リッチカードが表示されます。
[メニューを表示] をタップします。デフォルトのフォールバック インテントがトリガーされます。これは、Dialogflow エージェントが、この提案用に構成したポストバック データの処理方法を認識していないからです。
この問題を修正しましょう。
メニュー インテントを作成する
Dialogflow はインテントを使用してユーザーの意図を分類します。インテントにはトレーニング フレーズがあります。トレーニング フレーズとは、ユーザーがエージェントに対して発話する可能性があるフレーズのサンプルです。たとえば、メニューについて知りたい人であれば、「メニューは何か?」と尋ねることでしょう。"何を食べたいですか?」、「何を注文できますか?」。
これらのクエリはすべて一意ですが、メニューに関する情報を取得する目的は同じです。
このクエリに対応するには、「メニュー」インテントを作成します。
- 左側のナビゲーションで、[Intents] の横にある [+] をクリックします。
- [Intent name] として、「Menu"」と入力します。
[Training Phrases] で [Add user expression] をクリックし、各エントリを入力した後、Enter キーを押します。
What's your menu?
What can I eat?
What can I order?
reply_view_menu
この最後のトレーニング フレーズは、前のセクションで構成したこのポストバック データをこのインテントでマッピングするために使用されます。
このインテントに対応するために、さまざまなメニュー オプションを表示するカルーセルを作成します。メニューを大きく表示するには、ウェブサイトにリンクするか、メニューの画像を 1 枚共有することをおすすめします。
- [Responses] で [+] をクリックし、[RCS Business Messaging (RBM)] を選択します。
- [回答を追加] をクリックし、[カルーセル リッチカード] を選択します。
- [カードの幅を選択] オプションを [中] に設定します。
- 幅のオプションの下で、[カードを追加] を 2 回クリックします。カードの数が合計 4 枚に増えます。
- カード 1 に次のように入力します。
- カードのタイトル: ソーセージとペパロニ
- カードの説明: ソーセージ、ペパロニ、オリーブ、ピーマン
- 画像/動画の URL: https://storage.googleapis.com/df-rbm-codelab/sausage-pizza.jpg
- カード 3 で次のように入力します。
- カードのタイトル: イタリア語
- カードの説明: トマトソース、チーズ、ソーセージ
- 画像/動画の URL: https://storage.googleapis.com/df-rbm-codelab/italian-pizza.jpg
- カード 2 に次のように入力します。
- カードのタイトル: マルゲリータ
- カードの説明: サンマルザーノ トマト、モッツァレラチーズ、フレッシュ バジル、塩、エクストラ バージン オリーブオイル
- 画像 / 動画の URL: https://storage.googleapis.com/df-rbm-codelab/margarita-pizza.jpg
- カード 4 で次のように入力します。
- カードタイトル: Supreme
- カードの説明: ソーセージ、ペパロニ、ハンバーガー、カナディアンベーコン、玉ねぎ、オリーブ、マッシュルーム、ピーマン
- 画像/動画の URL: https://storage.googleapis.com/df-rbm-codelab/supreme-pizza.jpg
カードアイテムに続いて、ユーザーが会話を継続する方法も用意する必要があります。その場合は、[Add Responses] をクリックして [Simple Response] を選択し、「What do to do anything else\」のようにテキストを入力します。
シンプル レスポンスで [返信文候補を追加] をクリックして、次のように入力します。
- 提案テキスト: プロモーションを表示
- Suggestion Postback: こんにちは
[保存] をクリックします。
試してみましょう。
エージェントにメニューを尋ねてみましょう。デバイスの RBM エージェントの会話に「メニューの内容」と入力し、メッセージをエージェントに送信します。
クエリに対してエージェントが適切なレスポンスを返します。クエリがトレーニング フレーズと少し異なっていても、注目すべき点は、Dialogflow は引き続き、クエリを正しいインテントに一致させました。リッチカードの [メニューを表示] をタップしてみることもできます。
Dialogflow では、機械学習モデルの例としてトレーニング フレーズを使用して、ユーザーと正しいインテントとを照合します。機械学習モデルが、エージェント内のすべてのインテントに対してクエリをチェックし、すべてのインテントにスコアを与え、最高スコアのインテントを一致させます。最も高いスコアリング インテントのスコアが非常に低い場合は、フォールバック インテントが一致します。
応答しないインテントのキャプチャ
完了まであと少しです。次に、テストデバイスに戻り、最初のリッチカードで [ウェブサイトを表示] の提案をタップすると、関連する URL を開くだけでなく、デフォルトの代替インテントによってトリガーされるメッセージを受け取ることもできます。
これは、Open URL Action がアクションをタップすると Dialogflow に「back_view_website"」のポストバック テキストが送信され、Dialogflow がこれをデフォルトのフォールバック インテントにマッピングするためです。
すぐに応答することなくポストバック データをキャプチャするには、ポストバック データに一致するトレーニング フレーズを含むインテントを作成し、そのインテントに対するすべてのレスポンスを削除します。Dialogflow はポストバック データをインテントと一致させますが、インテントにはレスポンスが定義されていないため、応答しません。
No Response インテントを作成する
無視するアクションを指定するには、「応答なし」インテントを作成します。
- 左側のナビゲーションで、[Intents] の横にある [+] をクリックします。
- [インテント名] に「No response」と入力します。
- [Training Phrases] で [Add user expression] をクリックし、各エントリを入力した後、Enter キーを押します。
reply_view_website
- [回答] まで下にスクロールし、ゴミ箱アイコンを使用してすべての回答を削除します。
[保存] をクリックします。
試してみましょう。
デバイスで RBM エージェントの会話に「hi」と入力し、メッセージをエージェントに送信します。これにより、デフォルトのウェルカム インテントからプロモーションの特典がトリガーされます。[ウェブサイトの提案を表示] をクリックして、ブラウザでウェブサイトが開き、エージェントのレスポンスが送信されていないことを確認します。
これで完了です。
期間: 1:00
リクエストを送信しました
ここまで、Dialogflow を利用したシンプルな RBM エージェントの構築の各段階を完了しました。
詳細については、高度な Codelab をご覧ください。
この魅力的な新しいプラットフォームの開発を楽しんでください。