インテント

インテントは、処理が必要なユーザー入力や、処理する必要があるシステム イベントなど、アシスタントが実行する必要があるタスクを表します。インテントは、呼び出しモデルと会話モデルの構築に役立ちます。こうしたイベントが発生すると、アシスタントのランタイムは対応するインテントと照合し、処理するアクションにインテントを送信します。インテントには主に 2 つのタイプがあり、これらについて次のリストで説明します。

  • ユーザー インテントを使用すると、アシスタントの機能を拡張して、ブランドやサービスに固有のユーザー リクエストを把握できます。インテント内でカスタム トレーニング フレーズを定義すると、インテントの言語モデルが生成されます。この言語モデルによりアシスタント NLU が強化され、理解力がさらに向上します。

  • システム インテントには、トレーニング データのほか、アシスタントによって定義された会話以外の入力シグナルが含まれます。つまり、これらのインテントのトレーニング フレーズを定義する必要はありません。アシスタントは、メイン呼び出しなどのよく知られたシステム イベント中や、ユーザーが入力しない場合に、標準的な方法でこれらのインテントを照合します。

図 1. 一般的なインテント マッチングのシナリオ。ユーザーが、グローバルなインテントに一致する内容を発しました。対応するシーンが有効になり、最終的にユーザー入力の消費量が増えます。別のインテントが一致し、別のシーンに移行してアクティブになります。

ユーザーの意図

アクションを作成する際、トレーニング フレーズを含むユーザー インテントを作成します。これにより、アシスタントはさらに理解を深めることができます。アシスタントは、ユーザー リクエストをアクションに委任するときに、トレーニング フレーズを使用して NLU を補強します。

その場合、アシスタントはユーザーとアクション間の通信を仲介し、言語モデルが一致するインテントにユーザー入力をマッピングします。アシスタントは一致したインテントをアクションに通知するため、それをシーン内で処理できます。

ユーザー インテントをビルドする際は、次の要素を指定します。

  • グローバル インテント指定では、会話中および呼び出し時に、アシスタント ランタイムが指定されたユーザー インテントに対応できるかどうかを定義します。デフォルトでは、アシスタントは会話中にのみユーザー インテントを照合できます。ディープリンク呼び出しの対象となるのは、グローバルとしてマークしたインテントのみです。

  • トレーニング フレーズは、インテントに一致するユーザーの発話の例です。アシスタント NLU(自然言語理解)エンジンは、これらのトレーニング フレーズを自然に拡張して、他の類似のフレーズを含めます。質の高いサンプルを大量に提供することで、インテントの品質とマッチングの精度が向上します。

  • パラメータは、ユーザー入力から抽出する型付きデータです。パラメータを作成するには、トレーニング フレーズに型のアノテーションを付けて、ユーザー入力の一部を抽出することを NLU エンジンに通知します。パラメータには、システムタイプを使用することも、独自のカスタムタイプを作成することもできます。

NLU エンジンは、ユーザー入力でパラメータの一致を検出すると、その値を型付きパラメータとして抽出します。これにより、シーン内でその値を使用してロジックを実行できます。インテント パラメータの名前がシーンスロットと同じである場合、アシスタント ランタイムはシーンスロットにインテント パラメータの値を自動的に入力します。詳しくは、スロット値のマッピングのドキュメントをご覧ください。

インテント パラメータは「部分的」一致もサポートしています。たとえば、DateTime のタイプを指定した場合、ユーザーが日付のみを指定した場合、NLU は部分的な値をパラメータとして抽出します。

独自の NLU を使用して、アクションのすべてのユーザー入力を処理したい場合があります。たとえば、会話中に不一致が起きた場合にすべて対応するようにアクションを設定できます。すべてのユーザー入力を確実にキャプチャするには、自由形式のテキストタイプを使用してインテントを作成します。ただし、アシスタントのデフォルトの不一致動作をグローバルにオーバーライドする場合は、カスタム インテントを使用しないでください。ユーザーがアクション間を移動する際の機能に悪影響を及ぼす可能性があります。

Actions Console でカスタム インテントを作成すると、Actions Builder は、そのユーザー インテントと同じ役割を担う可能性があるシステム インテントを提案します。システム インテントについて詳しくは、次のセクションをご覧ください。

システム インテント

アシスタントは、標準のシステム イベントに基づいてシステム インテントを照合します。これらのイベントには、ユーザーが「一時停止」と話しかけてメディア プレーヤーを一時停止するなどのシステム定義の言語モデルがある場合や、ユーザーが入力をまったく行わないなど、言語モデルが含まれない場合があります。これらのインテントはアシスタントから提供されるため、マッチング方法について考慮する必要はありません。マッチングされたインテントの処理方法のみを気にする必要はありません。

また、システム インテントによって、YESNO など、頻繁に必要となるアクションのユーザー インテントを作成する必要がなくなります。システム インテントはすべての言語 / 地域向けにトレーニングされているため、複数の言語にわたって一貫性のあるユーザー エクスペリエンスをより簡単に実装できます。システム インテントをグローバル インテントとして設定することもできます。

システム インテントはバージョニングされます。システム インテントの特定バージョンは、アシスタントでサポートされている限り、そのバージョンを使用できます。アクションが、サポートされていないバージョンのシステム インテントを使用している場合、そのシステム インテントはサポートされているバージョンに自動的に更新されます。

インテントのリスト

インテント 説明
actions.intent.MAIN すべての Actions プロジェクトには、表示名に関連付けられたこのデフォルトのメイン呼び出しが含まれている必要があります。ユーザーは「OK Google, <表示名> に話しかけて」などのフレーズを話しかけてアクションを呼び出します。

actions.intent.NO_MATCH_1

actions.intent.NO_MATCH_2

actions.intent.NO_MATCH_FINAL

アクション内のインテントに一致することができないことをユーザーが発話した場合に、これらのインテントが一致します。最終インテントで、個々の再プロンプトと終了メッセージを設定できます。

actions.intent.NO_INPUT_1

actions.intent.NO_INPUT_2

actions.intent.NO_INPUT_FINAL

これらのインテントは、8 秒が経過してもユーザーの入力がないと照合されます。インテントごとに個別の再プロンプトを設定し、最終インテントで終了メッセージを設定できます。

actions.intent.CANCEL このインテントは、ユーザーが「終了したい」と言ったときなど、ユーザーが会話中にアクションを終了させたい場合に一致します。
actions.intent.MEDIA_STATUS_FINISHED ユーザーがメディア再生を完了するか、次のメディアにスキップすると、このインテントが一致し、アクションに送信されます。
actions.intent.MEDIA_STATUS_PAUSED ユーザーがメディア レスポンスでメディアの再生を一時停止すると、このインテントが照合され、アクションに送信されます。
actions.intent.MEDIA_STATUS_STOPPED ユーザーがメディア レスポンスからメディア再生を停止または終了したときに、このインテントが照合され、アクションに送信されます。
actions.intent.MEDIA_STATUS_FAILED メディア レスポンスのプレーヤーが再生に失敗したときに、このインテントが照合され、アクションに送信されます。
actions.intent.YES

ユーザーがアクションに肯定的なレスポンスを送信した場合、このインテントは一致します。

actions.intent.NO

ユーザーがアクションに否定的なレスポンスを送信した場合、このインテントと照合されます。

actions.intent.REPEAT

ユーザーがアクションに最後のレスポンスを繰り返すよう求めると、このインテントが一致します。エージェントでシステム インテントが有効になっていない場合、繰り返しのリクエストはアシスタントによって自動的に処理されます。このシステム インテントを有効にすると、レスポンスとレスポンスの処理方法を変更できます。

actions.intent.PLAY_GAME ユーザーがゲームのプレイをリクエストすると、このインテントが一致します。このインテントを使用すると、Actions on Google から提供される暗黙的な呼び出し(表示名を使わない呼び出し)を有効にすることができます。

他の言語のサポートを追加する

特定のシステム インテント(YESNONO_MATCH など)は英語でのみサポートされています。他の言語のサポートを追加するには、そのシステム インテントに一致するユーザー インテントを作成する必要があります。新しいインテントは、実装したシステム インテントと同じようにコードで処理する必要があります。

たとえば、新しいアクションを開発していて、YES システム インテントを実装しているとします。YES システム インテントは英語でのみサポートされていますが、ドイツ語と日本語のインタラクションもアプリでサポートしたいと考えています。他の言語をサポートするには、ドイツ語と日本語のトレーニング フレーズを含むインテントを作成し、YES システム インテントに使用した処理を実装します。

詳しくは、ユーザー インテントの作成をご覧ください。

詳しくは、ユーザー インテントのローカライズをご覧ください。

一致しない場合

ユーザーのレスポンスがインテントのいずれとも一致しない場合、アシスタントは入力の処理を試みます。この動作により、ユーザーは会話の途中でアクションを簡単に変更できます。たとえば、ユーザーが「今週はどんな映画を上映する?」と質問し、会話中にコンテキストを変更して「明日の天気は?」としましょう。この例では、「明日の天気は?」は最初のプロンプトによってトリガーされた会話に対する有効なレスポンスではないため、アシスタントは自動的にこの一致を処理し、ユーザーを適切な会話に移します。

アシスタントがユーザーの入力に一致する適切なアクションを見つけられなかった場合、ユーザーはそのアクションのコンテキスト内で操作を続行します。

有効な不一致のシナリオに応じて、アシスタントがアクションを中断させる可能性があるため、NO_MATCH システム インテントを使用してユーザーのクエリを解決しないでください。NO_MATCH インテントは、ユーザーに再プロンプトを表示する場合にのみ使用してください。