Dialogflow 対応 RBM エージェントを作成する(Basic)

この Codelab では、コードを記述せずに Dialogflow を使用して RBM エージェントを強化する会話型インターフェースを作成する方法を学びます。

この Codelab で作成するもの

  • RBM エージェントの会話を強化する Dialogflow エージェント
  • 架空のピザレストランの会話インターフェース。ユーザーに割引メニューを案内して、レストランのメニューを見ることができる。

学習する内容

  • Dialogflow の会話の主なインターフェースの主な構成を使用して構成する方法
  • ユーザーにリッチな RBM エクスペリエンスを提供するために、Dialogflow から RBM レスポンス タイプを作成する方法

必要なもの

  • RBM プラットフォーム Google アカウント

最初のエージェントを作成してクエリを実行する

期間: 30 分

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

Dialogflow エージェントを作成するには:

  1. 新しいタブを開き、Dialogflow にログインします。
  2. 左側のナビゲーションで [エージェントを作成] をクリックします。

  3. エージェントの名前として「CodelabRBMPizzaPlace"」と入力し、デフォルトの言語として「English」を選択し、デフォルトのタイムゾーンをご自身のタイムゾーンに設定します。

  4. [作成] をクリックします。

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 はインテントを使用してユーザーの意図を分類します。インテントにはトレーニング フレーズがあります。トレーニング フレーズとは、ユーザーがエージェントに対して発話する可能性があるフレーズのサンプルです。たとえば、メニューについて知りたい人であれば、「メニューは何か?」と尋ねることでしょう。"何を食べたいですか?」、「何を注文できますか?」。

これらのクエリはすべて一意ですが、メニューに関する情報を取得する目的は同じです。

このクエリに対応するには、「メニュー」インテントを作成します。

  1. 左側のナビゲーションで、[Intents] の横にある [+] をクリックします。
  2. [Intent name] として、「Menu"」と入力します。
  3. [Training Phrases] で [Add user expression] をクリックし、各エントリを入力した後、Enter キーを押します。

    • What's your menu?
    • What can I eat?
    • What can I order?
    • reply_view_menu

    この最後のトレーニング フレーズは、前のセクションで構成したこのポストバック データをこのインテントでマッピングするために使用されます。

このインテントに対応するために、さまざまなメニュー オプションを表示するカルーセルを作成します。メニューを大きく表示するには、ウェブサイトにリンクするか、メニューの画像を 1 枚共有することをおすすめします。

  1. [Responses] で [+] をクリックし、[RCS Business Messaging (RBM)] を選択します。
  2. [回答を追加] をクリックし、[カルーセル リッチカード] を選択します。
  3. [カードの幅を選択] オプションを [] に設定します。
  4. 幅のオプションの下で、[カードを追加] を 2 回クリックします。カードの数が合計 4 枚に増えます。
  5. カード 1 に次のように入力します。
    • カードのタイトル: ソーセージとペパロニ
    • カードの説明: ソーセージ、ペパロニ、オリーブ、ピーマン
    • 画像/動画の URL: https://storage.googleapis.com/df-rbm-codelab/sausage-pizza.jpg
  6. カード 3 で次のように入力します。
    • カードのタイトル: イタリア語
    • カードの説明: トマトソース、チーズ、ソーセージ
    • 画像/動画の URL: https://storage.googleapis.com/df-rbm-codelab/italian-pizza.jpg
  7. カード 2 に次のように入力します。
    • カードのタイトル: マルゲリータ
    • カードの説明: サンマルザーノ トマト、モッツァレラチーズ、フレッシュ バジル、塩、エクストラ バージン オリーブオイル
    • 画像 / 動画の URL: https://storage.googleapis.com/df-rbm-codelab/margarita-pizza.jpg
  8. カード 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 インテントを作成する

無視するアクションを指定するには、「応答なし」インテントを作成します。

  1. 左側のナビゲーションで、[Intents] の横にある [+] をクリックします。
  2. [インテント名] に「No response」と入力します。
  3. [Training Phrases] で [Add user expression] をクリックし、各エントリを入力した後、Enter キーを押します。
    • reply_view_website
  4. [回答] まで下にスクロールし、ゴミ箱アイコンを使用してすべての回答を削除します。

[保存] をクリックします。

試してみましょう。

デバイスで RBM エージェントの会話に「hi」と入力し、メッセージをエージェントに送信します。これにより、デフォルトのウェルカム インテントからプロモーションの特典がトリガーされます。[ウェブサイトの提案を表示] をクリックして、ブラウザでウェブサイトが開き、エージェントのレスポンスが送信されていないことを確認します。

これで完了です。

期間: 1:00

リクエストを送信しました

ここまで、Dialogflow を利用したシンプルな RBM エージェントの構築の各段階を完了しました。

詳細については、高度な Codelab をご覧ください。

この魅力的な新しいプラットフォームの開発を楽しんでください。