インライン インベントリ

Android アプリに App Actions を実装すると、 1 つのテーマに基づくバリエーションのリクエストを処理する必要があったりします。たとえば、 START_EXERCISE 組み込みインテント(BII)を実装することで、以下が可能になります。 さまざまなワークアウトの開始に Google アシスタントに次のような質問をします。 「OK Google, Example App でランニングを開始」

このインテントを実行するには、リクエスト マッチング ロジックで各インテントを 「ジョグ」などのバリエーションを含む"sprint"「人種」などです。 このロジックは、サポートするワークアウトのタイプが増えると、たちまち煩雑になります。

サポートされている BII(START_EXERCISE など)では、このような複雑なマッチングを回避できます ロジックを組み込んだりできますインラインインベントリは 機能とコンテンツを表す shortcuts.xml で定義される Android ショートカット 説明します

各ショートカットには、アイテム ID と類義語のリストが含まれます ユーザーがアイテムを参照する方法のバリエーションを表す。呼び出しの際に、BII はユーザーが指定した BII パラメータを類義語リストと比較します。一致するものが見つかると、BII パラメータは、一致するショートカットのアイテム ID に更新されます。

インライン インベントリを使用すると、Google アシスタントで BII パラメータを簡素化できる 値を渡す必要があります。

インライン在庫は、BII パラメータのルックアップ テーブルや、 ユーザーがアプリ内の機能やコンテンツを参照するさまざまな方法を表す 自分で商品を識別してアプリのリクエストのマッチングがシンプルになります。 ロジック: フルフィルメントで BII からのアイテム ID を予測できるようにする あります。

インライン インベントリのユーザーフロー図
図 1. START_EXERCISE 機能のフロー図 インライン インベントリで、サポートされているワークアウト名にユーザーが指定したワークアウト名を解釈 アプリのエクササイズタイプ。

制限事項と代替策

インライン インベントリのショートカットには次の制限があります。

  • ショートカットの上限: インライン インベントリのショートカットは最大 1,000 個まで作成できます。 アプリごとに定義されます。
  • 類義語の上限: 各インライン インベントリのショートカットには最大 20 個を含めることができます。 使用します。
  • 静的定義: インライン インベントリのショートカットは静的に宣言されます。 shortcuts.xml であり、新しい できます。

静的構成の要件を考えると、インライン インベントリが最適です。 変更の頻度が低いパーソナライズされていないアプリ情報を アシスタント(メニュー、バスの経路、飲み物のサイズなど)他の種類のコンテンツについては、以下の代替策を検討してください。

  • ウェブ インベントリ: ユーザークエリを、サポートされているアプリのコンテンツ ID と照合します。ウェブ インベントリ クエリが呼び出し中にリアルタイムで実行されるため、 商品カタログ、ソーシャル メディアの投稿、その他の頻繁に更新されるコンテンツ 移動します。

  • 動的ショートカット: パーソナライズされたアプリ コンテンツのインベントリを拡張する 移動します。動的ショートカットを使用すると、よく使うショートカットを たとえば料理注文アプリでの飲み物の並べ替えや メモ作成アプリでショッピング リストを表示する。

インライン インベントリを作成する

インライン インベントリにより、Google アシスタントは ユーザーがアプリのコンテンツや機能をリクエストするさまざまな方法を翻訳する 予測可能な識別子に変換します。対象 ユーザーがアプリですぐに使えるさまざまなワークアウトを提供しているとします。 場合、アプリはユーザーが次のリクエストを行うことを想定しています。 同じ種類のエクササイズ:

  • OK Google, Example App でランニングを開始して。
  • OK Google, Example App でジョギングを開始。

インライン インベントリのショートカットで、shortcutId"CARDIO_RUN" に設定します。 アプリが返すエクササイズの識別子。次に、「run」コマンドをおよび 「ジョグ」shortcutId の同義語として使用できます。その後ユーザーが App Action が上記のクエリによって実行されると、アシスタントは ID を使用して フルフィルメント インテントを生成する際の BII パラメータに "CARDIO_RUN"

サンプル app/res/shortcuts.xml ファイルからの以下のスニペットは、 確認します。

<capability android:name="actions.intent.START_EXERCISE">
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.ExerciseActivity">
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
    </capability-binding>
</shortcut>

上記のサンプルで、インライン インベントリ shortcut<capability-binding> 要素内で <parameter-binding> タグを宣言し、<capability> で定義されている exercise.name BII パラメータにバインドしています。

文字列配列リソース @array/run_names は、類義語のリストを指定しています: アシスタントが認識してマッピングする res/values/arrays.xml "CARDIO_RUN" の商品アイテム ID:

<!-- Synonym values for "CARDIO_RUN" inline inventory -->
<resources>
  <string-array name="run_names">
    <item>Run</item>
    <item>Jog</item>
    <item>Sprint</item>
  </string-array>
</resources>

ケーパビリティに <url-template> が指定されている場合、その shortcutId は 一致する値が、生成された URL の対応する パラメータのプレースホルダ。サンプルのコード例を次に示します。 app/res/shortcuts.xml ファイルでこのケースを実装します。

<capability android:name="actions.intent.START_EXERCISE">
  <intent>
    <url-template android:value="myapp://workout{?exercise}" />
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
</shortcut>

上記のサンプルでは、アシスタントがフルフィルメントのディープリンクを生成します myapp://workout?exercise=CARDIO_RUN

ショートカット インテントを使用したフルフィルメント

デフォルトでは、ショートカットは、ショートカットの <capability-binding> タグの宣言に従って、ショートカットがバインドされている capabilityintent に対して一致するインライン インベントリ値の shortcutId を提供します。Google Chat では ショートカット自体で定義された intent を フルフィルメントを追加するには、<shortcut-fulfillment> タグを capability に追加します。

サンプル app/res/shortcuts.xml ファイルの次のコードは、以下を実装します。 ショートカット フルフィルメント:

<capability android:name="actions.intent.START_EXERCISE">
  <shortcut-fulfillment>
    <parameter android:name="exercise.name"/>
  </shortcut-fulfillment>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
  <intent android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.ExerciseActivity">
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</shortcut>

上のサンプルでは、ユーザークエリがインライン インベントリ値と一致すると、 exercise.name パラメータ、<shortcut-fulfillment> タグ バインドされたショートカットの intent をフルフィルメントに使用することを指定します。

Open App Feature BII のインライン インベントリ

インライン インベントリは、一般的にはインライン インベントリをサポートする BII のオプションのケーパビリティですが、OPEN_APP_FEATURE のような特定の BII では必須です。この よく使用される BII により、ユーザーはアプリの特定の機能にディープリンクできる 利用できます。 オープンアプリ機能 BII には、アプリの機能名のインライン インベントリが必要です。 ユーザーをディープリンクする前に、ユーザーがリクエストした機能が存在することを検証 説明します。

サンプル app/res/shortcuts.xml ファイルの次のコードでは、これを実装しています。 アプリの注文ステータス機能を表す単一のショートカットを持つ BII:

<capability android:name="actions.intent.OPEN_APP_FEATURE">
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="feature"
       android:key="featureParam" />
  </intent>
  <!-- Required fallback fulfillment to handle when parameters are missing from user query. -->
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="HOME_SCREEN"
       android:key="featureParam" />
  </intent>
</capability>

<!-- Inline inventory for OPEN_APP_FEATURE. -->

<shortcut android:shortcutId="ORDER_STATUS">
  <capability-binding android:key="actions.intent.OPEN_APP_FEATURE">
    <parameter-binding
      android:key="feature"
      android:value="@array/order_status_names" />
    </capability-binding>
</shortcut>

res/values/arrays.xml の文字列配列リソース。 @array/order_status_names は、 この機能の同義語:

<resources>
  <string-array name="order_status_names">
    <item>Order status</item>
    <item>Orders</item>
    <item>Order history</item>
  </string-array>
</resources>

前述のケーパビリティを設定して、アシスタントは同じ機能を表すさまざまなフレーズを遂行できます。

  • 「OK Google, Example App に注文ステータスを表示して」
  • 「OK Google, Example App で注文を表示して」
  • 「OK Google, Example App で注文履歴を表示して」

インライン インベントリをテストする

インベントリをテストするには、アシスタントが関連する App Action ケーパビリティを遂行する際にアプリに渡す BII パラメータ値を検査します。インライン Inventory は、在庫にバインドされた BII のユーザー指定値を置き換えることで機能します。 パラメータに、一致するインライン インベントリ ショートカットの shortcutId を渡して、

対象 たとえば、START_EXERCISE BII ケーパビリティでは、インライン インベントリを使用して、 ユーザーが指定した BII パラメータ「run」を変換し、対応する演習に ID、"CARDIO_RUN"

Google アシスタント プラグインを使用すると、インライン インベントリ アプリをプレビューできます テストデバイスのアシスタントでのアクション。プラグインを使用してインベントリをテストする手順は次のとおりです。

  1. インライン インベントリに関連付けられた類義語の値を使用して、BII ケーパビリティのインベントリにバインドされたパラメータを構成します。
  2. プラグインから BII をトリガーし、テストデバイスで BII を呼び出します。
  3. 生成されたパラメータ値をアシスタントが App Actions フルフィルメントで