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,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>
タグの宣言に従って、ショートカットがバインドされている capability
の intent
に対して一致するインライン インベントリ値の 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 アシスタント プラグインを使用すると、インライン インベントリ アプリをプレビューできます テストデバイスのアシスタントでのアクション。プラグインを使用してインベントリをテストする手順は次のとおりです。
- インライン インベントリに関連付けられた類義語の値を使用して、BII ケーパビリティのインベントリにバインドされたパラメータを構成します。
- プラグインから BII をトリガーし、テストデバイスで BII を呼び出します。
- 生成されたパラメータ値をアシスタントが App Actions フルフィルメントで