会話型アクション(Dialogflow)

会話型アクションは、デベロッパーがアシスタントのユーザーのためにカスタム エクスペリエンス(会話)を作成できるようにすることで、Google アシスタントの機能を拡張します。会話では、会話型アクションがアシスタントからのリクエストを処理し、音声と映像のコンポーネントで応答を返します。会話型アクションでは、レスポンスを返す前に外部サービスに接続して会話ロジックまたはビジネス ロジックを追加することもできます。

たとえば、ユーザーは会話型アクションを呼び出して外部フルフィルメント サービスからレスポンスを取得できます。情報の検索、パーソナライズされたおすすめ情報の取得、デジタル決済を含むトランザクションの実行などが考えられます。

Google アシスタントとの双方向の会話で、ユーザーが会議セッションの開催について質問し、その回答を受け取ります。
図 1. 会話型アクションの例

ユースケース

会話型アクションは、別のエクスペリエンスを補完するシンプルなユースケースに最適です。優れた会話型アクションは、多くの場合、次の一般的なカテゴリに分類されます。

  • ユーザーが簡単に回答できること。フライトの予約など、時刻や日付などの使い慣れた入力で実行できるアクション。
  • 迅速かつ魅力的に有用なアクション。通常、ユーザーはわずかな時間ですぐに利益を得られます。たとえば、お気に入りのスポーツチームの次の試合がいつになるかを知ることができます。
  • 本質的に音声に適したアクション。これらは通常、ヨガや軽いエクササイズの最中にコーチングを受けるなど、ハンズフリーでしたいものです。

会話型アクションの仕組み

コンピュータ中心のパラダイムを採用した従来のモバイルアプリやデスクトップ アプリとは異なり、ユーザーは自然な会話を通じてアシスタントのアクションを操作します。会話型アクションは、ユーザーが呼び出すと開始し、ユーザーが(事前定義されたフレーズを使用して)終了するか、会話型アクションで会話の終了を示すまで継続します。

会話中、ユーザー入力はアシスタントによって音声からテキストに変換され、自然言語処理用の JSON リクエストに変換されます。これらのリクエストは、会話フルフィルメントと呼ばれるものに送信されます。

会話フルフィルメントは、ユーザーのクエリを解析して構造化データに変換し、そのデータを処理して、アシスタントに Webhook JSON レスポンスを返します。その後、アシスタントはレスポンスを処理してユーザーに提示します。

会話のフルフィルメントは、JSON リクエスト入力と Webhook JSON レスポンス出力で表現できます。
図 2. 会話フルフィルメントは JSON in-JSON 出力システム

独自の自然言語処理サービスの構築は困難な場合があるため、Google ではその処理方法として Dialogflow を提供しています。Dialogflow を使用できないデベロッパー向けには、バックアップ オプションとして Actions SDK も用意されていますが、関連する開発パスが別途用意されています。

Dialogflow でエージェントを設定すると、Dialogflow フルフィルメントの使用など、Dialogflow の機能によって会話フルフィルメントが拡張されます。このアプローチにより、ユーザーに望ましい結果を提供するために必要となる他のサービスから、会話のフルフィルメントを分離できます。

Actions on Google がユーザーの発話を解析し、Dialogflow にリクエストを送信します。Dialogflow がインテントを照合し、パラメータを抽出して対応する Dialogflow フルフィルメントに送信します。その後、フルフィルメントは Actions on Google にレスポンスを返し、Actions on Google はアシスタントのサーフェスにレスポンスをレンダリングします。
図 3. Dialogflow を使用する場合の会話フルフィルメント

会話型アクションを構築する

会話型アクションの構築の大半は、会話の設計と会話フルフィルメントの構築です。会話は、会話型アクションのユーザー インターフェースです。ユーザーが Actions プロジェクトを呼び出す方法、会話でユーザーが発話できる有効なこと、Actions プロジェクトがそれらにどのように応答するかについて考える必要があります。

Actions プロジェクトでは、プロジェクトを公開するためのメタデータを提供し、会話のフルフィルメントの方法を指定します。Dialogflow を使用するデベロッパーは、Dialogflow エージェントをプロジェクトに関連付け、Dialogflow を介してフルフィルメントを構築します。Actions SDK を使用するデベロッパーは、会話フルフィルメントを構築するために、会話 Webhook 形式でコーディングしてデプロイする必要があります。

会話を設計する際は、Google のプロセスと設計原則を使用することをおすすめします。会話型インターフェースはまだ比較的新しいテクノロジーであり、ベスト プラクティスを学ぶことで今後の時間を節約できます。

Dialogflow を使用したフルフィルメント

Dialogflow エージェントと統合する場合、エージェントは会話型アクションでユーザークエリの NLU を処理します。この手順では、Dialogflow エージェントが次の処理を行います。

  1. 提供したトレーニング フレーズと会話コンテキストに基づいて、アシスタントから受信した各リクエストを解析します。
  2. 各リクエストを Dialogflow インテント(イベントとも呼びます)と照合します。
  3. パラメータを Dialogflow エンティティに抽出します。

Dialogflow エージェントは、独自のフルフィルメント(Webhook としてデプロイ)で呼び出しを行い、REST API や、アシスタントに返すレスポンスを生成する他のバックエンド サービスの呼び出しなどのロジックを実行できます。この Webhook は Dialogflow フルフィルメントとも呼ばれ、Dialogflow Webhook 形式を使用します。

Dialogflow は、インテント マッチングでユーザーの発話を受け入れ、抽出されたパラメータを Dialogflow フルフィルメントに提供します。フルフィルメントはユーザーにレスポンスを返します。
図 4. Dialogflow エージェントは、ユーザークエリを解析して Dialogflow フルフィルメントの構造化データに変換します

Dialogflow を使用する場合の会話フルフィルメントの構築では、主に Dialogflow フルフィルメント Webhook の開発を行います。Actions on Google のドキュメントには、Dialogflow フルフィルメント Webhook の設計、構築、テストに役立つリソースが記載されています。その中でも特に重要なのが、これらのリソースに Node.js クライアント ライブラリJava クライアント ライブラリが含まれていることです。

Dialogflow を使用して構築する場合は、Dialogflow コンソールを使用して、Dialogflow インテント、エンティティ、トレーニング フレーズを作成します。

Dialogflow に関する一般的な情報については、Dialogflow のドキュメントで Actions on Google の統合に関する説明をご覧ください。

Actions SDK を使用したフルフィルメント

Actions SDK を使用して会話のフルフィルメントを構築するには、主にアクション パッケージの作成とデプロイを行います。アクション パッケージは ActionPackage 形式で作成され、会話 Webhook 形式を使用します。アクション パッケージには、特定のアクション プロジェクトのすべてのアクションが含まれます。

アシスタントは、Actions on Google インテントを使用して、会話のフルフィルメントにユーザークエリを提供します。フルフィルメント Webhook はインテントごとにインテントを解析して処理し、ユーザーの JSON レスポンスをアシスタントに返す必要があります。

レスポンス

アシスタントのアクションを作成するときは、音声認識スピーカー向けの音声中心の会話や、アシスタントがサポートするサーフェスでの視覚的な会話など、さまざまなサーフェスに対応する会話をデザインします。このアプローチにより、ユーザーは音声または視覚的アフォーダンスによって、迅速に目的の操作を行えます。

フルフィルメントを作成する際に、さまざまな魅力的なレスポンス タイプの中から、アシスタントがユーザーに提示するレスポンスの種類を選択できます。単純なテキストを含むチャットふきだしから、メディア レスポンス、カルーセル、Interactive Canvas を使用した HTML まで、多岐にわたります。

次のステップ

Google アシスタントのアクションを作成する(レベル 1) Codelab の手順に沿って、最初の会話型アクションの作成を開始します。

その後、Dialogflow または Actions SDK を使用して独自の会話フルフィルメントを構築するためのガイドに進むことができます。また、会話型アクションの構築については、次のリソースもご覧ください。