自然言語を理解して自然言語で応答する Dialogflow CX Google Chat アプリを構築する

このページでは、Google Chat アプリ、Google Chat アプリ、 自然言語で文章を理解し、回答する Dialogflow。このガイドでは、 Dialogflow CX。 直接統合されています。また、 Dialogflow ES。 Dialogflow ES Google Chat アプリ Dialogflow ES Google Chat ご覧ください

たとえば、レンタル サービスを利用できる Chat アプリを例にとると、 考えていますユーザーは「車を借りたい」と入力するでしょう。「 Chat アプリが次のような質問をすると、 「どこで乗車をご希望ですか?」人間のような ユーザーとのコミュニケーション プロセスであり、 レンタカーを予約する際、人間の音声を理解して応答します。

これは一例にすぎません。Dialogflow Chat アプリは、 やり取りできます。人間の自然な発話が必要な場合は、 Dialogflow Chat アプリ。「 ビルド済みエージェント Dialogflow の機能を紹介します。

  • フライトを予約
  • 診察を予約できます
  • 料理の出前を注文する
  • 小売商品カタログに関する質問に回答する 他の色もご用意
  • ビルド済みの Dialogflow エージェントの選択ページ。
    図 1: Dialogflow Chat アプリ用のビルド済みエージェントを選択する。
  • Dialogflow CX でエージェントをテストする。
    図 2.Dialogflow CX でエージェントをテストし、エージェントのロジックと構成が意図したとおりに機能することを確認する。この図は、レンタカーの乗車場所と返却場所の設定など、会話の特定の手順に関連する一連のトピックのページを示し、それらをつなぐロジックを構成しています。会話はシミュレータでテストされます。
  • Dialogflow Chat アプリの構成。
    図 3.Google Cloud コンソールの Chat API 構成ページで、Dialogflow CX エージェントを使用してレスポンスを処理するように Chat アプリを構成します。
  • Dialogflow CX Chat アプリのテスト
    図 4.Google Chat の Dialogflow Chat アプリを使用して、レンタカーの予約について会話する。

目標

  • 環境を設定する。
  • Dialogflow CX エージェントを作成してデプロイする。
  • Google Workspace の Dialogflow CX エージェント。
  • Chat アプリをテストします。

前提条件

アーキテクチャ

次の図は、VM のアーキテクチャを Dialogflow で構築された Chat アプリ:

Dialogflow を使用して実装された Chat アプリのアーキテクチャ。

上の図では、Dialogflow を操作するユーザーが Chat アプリには、次のような情報の流れがあります。

  1. ユーザーが Chat でメッセージを ダイレクト メッセージまたはスペースで Chat スペース。
  2. Google Cloud に存在する Dialogflow 仮想エージェントは、 メッセージを処理してレスポンスを生成します。
  3. 必要に応じて、 Dialogflow Webhook、 Dialogflow エージェントは、Google Cloud などの外部のサードパーティ サービスと チケット発行ツールとして使用するのが最適です
  4. Dialogflow エージェントは、API 呼び出しに対するレスポンスを Chat での Chat アプリサービス。
  5. レスポンスが Chat スペースに配信されます。

環境を設定する

Google API を使用する前に、Google Cloud プロジェクトで有効にする必要があります。 1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。
  1. Google Cloud コンソールで、Google Chat API と Dialogflow API を有効にします。

    API を有効にする

  2. API を正しい [次へ] をクリックします。

  3. 正しい API を有効にしていることを確認し、[有効にする] をクリックします。

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

Dialogflow CX エージェント 複数の会話を同時に処理できる仮想エージェント お客様と緊密に連携しますこれは自然言語理解モジュールで、 人間の言葉のニュアンスを理解しますDialogflow でエンドユーザーのテキストを翻訳 構造化データへの会話で、アプリとサービスによって 理解できます。あなたは、Dialogflow エージェントを設計して構築し、 システムに必要な会話を行えます。

Dialogflow エージェントは、コールセンターの担当者のようなものです。両方をトレーニングする 期待される会話のシナリオに対処できます。トレーニングは、必ずしも既定で 過度に露骨にします。

Dialogflow CX エージェントを作成する手順は次のとおりです。

  1. Dialogflow CX コンソールで、Dialogflow CX コンソールを開きます。[ メニュー > [Dialogflow CX]。

    Dialogflow CX コンソールに移動

  2. Google Cloud プロジェクトを選択します。プロジェクトを見つけるには、次を行う必要があります。 [すべて] をクリックして検索します。

  3. ビルド済みエージェントまたは 独自に作成できます。エージェントの詳細を確認したい場合は 後でカスタマイズする場合は、いずれかの ビルド済みエージェント エージェントができることについて学ぶうえでも役立ちます。

    ビルド済みエージェントを選択する手順は次のとおりです。

    1. [Use prebuilt agents] をクリックします。
    2. ビルド済みエージェントを選択します。このガイドでは、 旅行: レンタカー

      エージェントは初級者に分類されます。 エージェントが使用する特徴の数に応じて、中級者向け、上級者向けの 会話ロジックの洗練度が増しています。Google Cloud の 中間エージェントまたは高度なエージェントには、エージェント固有の カスタマイズや設定を行うことができます。たとえば、 Google Cloud コンソール。

    3. [エージェントとしてインポート] をクリックします。

    独自のエージェントを作成する手順は次のとおりです。

    1. [Create Agent(エージェントを作成)] をクリックします。
    2. [Auto-generate] を選択して、 データストア エージェント [Build your own] を選択して他の種類のエージェントを作成することもできます。

    エージェント構築プロセスの詳細なチュートリアルについては、 Dialogflow CX エージェントを作成します

  4. エージェントの基本設定を構成します。

    1. [表示名] に表示名を入力します。
    2. お好みのロケーションをお選びください詳細設定の 位置情報の設定 [編集] をクリックします。
    3. 使用するタイムゾーンを選択します。
    4. エージェントのデフォルト言語を選択します。 エージェントの作成後に、デフォルトの言語を変更することはできません。
  5. [作成] をクリックします。Dialogflow CX がエージェントの作成を開始し、 エージェントのデフォルトの起動フローが表示されます。

  6. 必要に応じて、エージェントをカスタマイズします。エージェント向けの 詳しいチュートリアルについては 詳細については、このモジュールの Dialogflow CX エージェントを作成します

  7. エージェントをテストすることをおすすめします。

    1. [Test agent] をクリックします。
    2. [Test agent in environment] を選択します。
    3. [環境] で [ドラフト] を選択します。
    4. フローで、[Default Start Flow] を選択します。
    5. [ページ] で [スタートページ] を選択します。
    6. [Talk to agent] 入力バーに「Hello」と入力して Enter キーを押します。 エージェントは自己紹介で応答します。
    7. テスト用の会話のサンプルを使用してテストを完了します。
  8. Dialogflow CX エージェントが作成されます。Dialogflow CX コンソールに戻ります。 メニュー アイコン をクリックします。 > [Dialogflow CX]。

    Dialogflow CX コンソールに移動

  9. [Agents] で [] をクリックします。 > [名前をコピー] をタップします。この名前を次の名前を付けて保存: Chat 用アプリの構成時に使用します。

Chat アプリを作成して Dialogflow エージェントに接続する

Dialogflow CX エージェントを作成したら、次の手順でエージェントを Chat アプリ:

  1. Google Cloud コンソールで、[Google Chat API] に移動します。「Google Chat API」を検索するおよび [Google Chat API]、[管理] の順にクリックします。

    Chat API に移動

  2. [Configuration] をクリックして、Chat 用アプリを設定します。

    1. [アプリ名] に「Dialogflow App」と入力します。
    2. [アバターの URL] に、次のように入力します。 https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
    3. [説明] に「Responds to real human conversation」と入力します。
    4. [機能] で [1:1 のメッセージを受信する] を選択し、 スペースやグループの会話に参加する
    5. [接続設定] で [Dialogflow] を選択します。
    6. [Dialogflow の設定] で [Dialogflow CX] を選択します。
    7. [Agent or Environment resource name] に、Dialogflow CX エージェントを貼り付けます。 末尾にコピーした名前です。 Dialogflow CX エージェントを作成する
    8. 特定のユーザーやグループにこの Chat 用アプリの利用を許可する メールアドレスを入力します。
    9. [ログ] で、[エラーを Logging にロギング] を選択します。
  3. [保存] をクリックします。

Chat アプリが受信して応答する準備が整いました 表示されます。

Chat アプリをテストする

Dialogflow CX Chat アプリをメッセージでテストします。 できます。

  1. Google Workspace アカウントを持つユーザーを ご自身で Trusted Tester として追加した際に提供される通知もあわせてご確認ください。

    Google Chat にアクセス

  2. [ チャットを新規作成] をクリックします。
  3. [1 人以上のユーザーを追加] フィールドに、招待する Chat アプリ。
  4. 結果から Chat 用アプリを選択します。ダイレクト というメッセージが開きます。

  5. アプリとの新しいダイレクト メッセージで、「Hello」と入力し、 enter キーを押します。

    Dialogflow Chat アプリは、 できます。

  6. テストを終了するには サンプルのテスト会話をご覧ください。

テスト用の会話の例

Dialogflow CX Chat アプリを Dialogflow CX コンソールまたは Google Chat で、次のように会話します。 この説明は、Dialogflow CX エージェントがどのようにメッセージを プロンプトが生成され、独自の自然言語レスポンスが 会話のステップごとに示されます。このサンプルの会話は、 ビルド済みエージェント旅行: レンタカー)という名前を付けます。

ダイアログ 説明
エンドユーザー: こんにちは
エージェント: こんにちは。仮想レンタカーのエージェントです。できる 新しいレンタカーの予約を開始できます。どのようなご用件でしょうか? 今日はどうですか?
  1. Default Start FlowDefault Welcome Intent ルートが呼び出されます。
  2. この状態ハンドラのフルフィルメント(「Hi!私は...」) レスポンス キューに追加されます。
  3. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: レンタカーを借りたいのですが、
エージェント: どこで車両を受け取りたいですか?
  1. car_rental.reservation_create インテント ルート が一致することを確認します。
  2. セッションが [Pickup Location](集荷場所)ページに移行します。
  3. [Pickup Location](集荷場所)ページのフォームは入力されていないため、 エージェントは、pickup_location パラメータを使用して、ユーザーに購入を求めるメッセージを表示します。 (「どこで受け取りますか」)、 レスポンス キューに追加されます。
  4. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: Las Vegas
エージェント: 承知いたしました。集荷はラスベガスで行われます。
エージェント: 降車場所は 受け取り場所は?
  1. エンドユーザーの入力で pickup_location が設定される 前のコードでエージェントからリクエストされた 会話のターンです。
  2. car_rental.return_different_location インテント Default Start Flow の上のルートと照合されます。
  3. [Pickup Location](集荷場所)ページに表示されたフォームの入力ルート が評価されて呼び出されます。 商品「OK, your pickup...」が追加されている パラメータ参照が解決されてレスポンス キューに エンドユーザーから提供される実際の値を使用します。
  4. セッションが [Confirm Location] ページに移行します。
  5. [Confirm Location] ページにエントリのフルフィルメントがある (「降車場所は異なりますか?」) レスポンス キューに追加されます。
  6. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: はい。ロサンゼルスに車を降ろします。
エージェント: 到着地はロサンゼルスです。
エージェント: ご希望の車の集荷日時をお知らせください。
  1. car_rental.return_different_location インテント Default Start Flow の上のルートと照合されます。
  2. セッションが [持ち込み場所] ページに移行します。
  3. エンドユーザーの入力が drop_off_location に表示されます。 前のコードでエージェントからリクエストされた 会話のターンです。
  4. [持ち込み場所] ページのフォームの入力ルート が評価されて呼び出されます。 商品「OK, your drop off...」が追加されている レスポンスキューに追加されます
  5. セッションが [レンタル期間] ページに移動します。
  6. [Rental Duration](レンタル期間)ページのフォームの値が不完全であるため、 pickup_date_timepickup_date_time パラメータを設定するようユーザーに求めます。 (「受け取り日時をお知らせください」)、 レスポンス キューに追加されます。
  7. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: 3 月 5 日の正午に車を受け取りたいのですが、
エージェント: 車両のお預け日時をお知らせください。
  1. エンドユーザーの入力で pickup_date_time が入力されます。 前のコードでエージェントからリクエストされた 会話のターンです。
  2. [Rental Duration](レンタル期間)ページに、別のフォームの値が指定されていません。 drop_off_date_time パラメータを設定するようユーザーに求めます。 (「降車日時をお選びください」)、 レスポンス キューに追加されます。
  3. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: 3 月 15 日正午。
エージェント: 確認です。

次の場所に車両をお引き取りにいただきます: ラスベガス 2024-03-05 12:00:00 削除 ロサンゼルス 2024 年 3 月 15 日 12:00:00

いかがでしょうか。
  1. エンドユーザーの入力で drop_off_date_time が入力されます。 前のコードでエージェントからリクエストされた 会話のターンです。
  2. [レンタル期間を確認] ページに移行します。
  3. [レンタル期間の確認] ページに入力内容のフルフィルメントがあります。 (「以下を確認します」)。 レスポンス キューに追加されます。
  4. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: はい、ありがとうございます。
エージェント: ありがとうございます。では、車を選びます。
エージェント: エコノミーですか、それともラグジュアリーですか? ?
  1. small_talk.confirmation.yes インテント [レンタル期間を確認] ページのルートと一致します。
  2. エージェントがユーザーの選択をメッセージで確認します (「ありがとうございます。...」を選択)、 レスポンス キューに追加されます。
  3. セッションが [Vehicle Disambiguation] ページに移動します。
  4. [Vehicle Disambiguation] ページのフォームが未完成のため、 エージェントは、vehicle_type パラメータを使用してユーザーにメッセージを表示します。 (「エコノミーですか、ラグジュアリーにしますか...」)、 レスポンス キューに追加されます。
  5. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: エコノミー クラスを利用してください。
エージェント: Cymbal Car と Cymbal Truck のどちらをご希望ですか?
  1. $session.params.vehicle_type="economy_vehicle" インテント 照合されます。
  2. セッションが [エコノミー オプション] ページに移動します。
  3. [Economy Options] ページにエントリのフルフィルメントがある (「...はいかがでしょうか」)、 レスポンス キューに追加されます。
  4. エージェントがレスポンス キューをエンドユーザーに送信します。
エンドユーザー: Cymbal Truck。
エージェント: Cymbal Truck は 1 日あたり 50.33 ドルです。 AM/FM ラジオが付属しており、4 名まで収容可能。 支払いに進みますか?
エンドユーザー: はい。
  1. $session.params.vehicle_type="Cymbal Truck" インテント ルートが一致し、vehicle_model パラメータが入力されます。
  2. セッションが [Cymbal Truck の確認] ページに移行します。
  3. [Cymbal Truck の確認] ページにエントリのフルフィルメントがあることを確認する (「Cymbal Truck は 1 日あたり 50.33 ドルです...」)、 レスポンス キューに追加されます。
  4. エージェントがレスポンス キューをエンドユーザーに送信します。
  5. ユーザーの応答が small_talk.confirmation.yes の あります
エージェント: どのカードをお使いですか?
エンドユーザー: Altostrat
エージェント: カード番号を入力してください。
エンドユーザー: 1234 1234 1234 1234
エージェント: カードに記載されているお名前を教えてください。
エンドユーザー: Charlie
エージェント: 請求先住所を教えてください。
エンドユーザー: 1800 Amphibious Blvd.マウンテン ビュー、カリフォルニア州
エージェント: 請求先の郵便番号を教えてください。
エンドユーザー: 94045
エージェント: Cymbal Car を選択します 2024 年 3 月 5 日 12:00:00 から 2024 年 3 月 15 日 12:00:00。このルートの合計: $175.38。
エージェント: レンタルをご利用いただきありがとうございました。今後ともよろしくお願いいたします。
  1. セッションは [お支払い] ページに移動します。
  2. お支払いフォームが不完全であるため、エージェントがメッセージを入力する card_typecard_numberbilling_namebilling_street_address および billing_zip_code パラメータ (「...」のようなカード)。 レスポンス キューに追加され、 ユーザーが応答します。ユーザーのレスポンスによって各パラメータ値が設定されます。
  3. セッションが [Rental Confirmation] ページに移行します。
  4. Rental Confirmation(賃貸契約の確認)ページにエントリー フルフィルメントが設定されている (例: 「店先は...」)、 レスポンス キューに追加されます。
  5. エージェントがレスポンス キューをエンドユーザーに送信します。
  6. セッションが [End Session](セッションの終了)ページに移動します。

Dialogflow からカード メッセージを送信する

<ph type="x-smartling-placeholder">

Dialogflow は、 テキストまたは カード メッセージ。カードで回答するには 次のように指定します。 カスタム ペイロード フルフィルメント

次の JSON は、カード メッセージをカスタム ペイロードとして送信する方法を示しています。 フルフィルメント:

json

{
  'cardsV2': [{
    'cardId': 'createCardMessage',
    'card': {
      'header': {
        'title': 'A card message!',
        'subtitle': 'Sent from Dialogflow',
        'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
        'imageType': 'CIRCLE'
      },
      'sections': [
        {
          'widgets': [
            {
              'buttonList': {
                'buttons': [
                  {
                    'text': 'Read the docs!',
                    'onClick': {
                      'openLink': {
                        'url': 'https://developers.google.com/workspace/chat'
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }]
}

制限事項と考慮事項

  • Chat のインタラクション イベント サポートが限定的であり、次の点も考慮する必要があります。 <ph type="x-smartling-placeholder">
      </ph>
    • 次の インタラクション イベントのタイプ サポートされています。 <ph type="x-smartling-placeholder">
        </ph>
      • MESSAGE
      • ADDED_TO_SPACE
      • CARD_CLICKED
    • MESSAGE イベントまたは ADDED_TO_SPACE イベントの場合、 Dialogflow エージェントは、API の argumentText フィールドの値に対応します。 表示されます。メッセージに スラッシュ コマンドを使用した場合、 代わりに text フィールドが使用されます。
    • CARD_CLICKED イベントの場合、Dialogflow エージェントに送信されたクエリ入力 形式は CARD_CLICKED.functionName です。ここで、functionName 対応するトレーニング モジュールの function フィールドの値に Action オブジェクト インタラクティブなカード要素(ボタンなど)に付随するボタンです。
    • 各チャット インタラクション イベントの完全な JSON ペイロード クエリ パラメータでカスタム ペイロードとして Dialogflow に送信され、 Cloud Shell を使用して Dialogflow Webhook WebhookRequest.payload フィールドの値をクエリします。
  • 対応に関する考慮事項 スラッシュ コマンドカードやダイアログからデータを受け取る: <ph type="x-smartling-placeholder">
      </ph>
    • Dialogflow Chat アプリがスラッシュ付きのメッセージを受信すると、 コマンドを使用すると、クエリ入力に text フィールドの値のみが含まれます。 text フィールドはスラッシュ コマンドの名前で始まります(例: /command)。これは、Dialogflow エージェントのインテントを構成するために使用します。 検出します。
    • Dialogflow エージェントがプロンプトを Chat 操作イベントの JSON ペイロード これを行うには、 Dialogflow Webhook クエリ パラメータでカスタム ペイロードを検査できます。
    • ダイアログを 単一のカスタム JSON ペイロードで応答し、 DIALOG を含むメッセージが含まれている アクション レスポンス
    • カードから入力されたデータを処理する場合、Dialogflow エージェントは、 テキスト CARD_CLICKED で始まり、 適切な単一のカスタム JSON ペイロードを action
  • リンク プレビューはサポートされていません。
  • Dialogflow エージェントが 1 つのメッセージのみで応答した場合、そのメッセージは 同期的に Google Chat に送信されます。Dialogflow エージェントが応答した場合 すべてのメッセージが Chat に送信される 非同期的に create メソッドごとに 1 回ずつ、Chat API の spaces.messages リソースに対して 表示されます。
  • Dialogflow CX と Chat のインテグレーションを使用する場合、 Dialogflow エージェントと Chat アプリを設定する必要があります。 プロジェクト内に存在します。Dialogflow と Cloud Storage を 異なる Cloud プロジェクトでのチャットの共有は、 接続を容易にするために中間サーバーをセットアップします。方法については、 こちらを参照 Dialogflow CX のチャット統合の例 ご覧ください。

トラブルシューティング

Google Chat アプリまたは card がエラーを返した場合、 Chat のインターフェースに「エラーが発生しました」というメッセージが表示されている。 または「リクエストを処理できません」が表示されます。場合によっては、Chat の UI が エラー メッセージは表示されませんが、Chat 用アプリまたは 予期しない結果が生じた場合たとえば、カード メッセージに 表示されます。

Chat UI にエラー メッセージが表示されない場合がありますが、 エラーの修正に役立つ、わかりやすいエラー メッセージとログデータ Chat 用アプリのエラーロギングが有効になっている場合。表示のヘルプについては、 エラーの修正について詳しくは、このモジュールの Google Chat のエラーのトラブルシューティングと修正

クリーンアップ

サービス アカウントに対する Google Cloud アカウントへの課金を回避するために、 リソースがある場合は、その Terraform 構成ファイルを できます。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。[ メニュー &gt; IAM と管理者 &gt; [リソースの管理] をクリックします。

    <ph type="x-smartling-placeholder"></ph> Resource Manager に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[ 削除します。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックして削除します。 できます。