Inventaris inline

Saat menerapkan Action Aplikasi untuk aplikasi Android, Anda mungkin harus menangani permintaan yang merupakan variasi pada suatu tema. Misalnya, aplikasi kebugaran Anda mengimplementasikan intent bawaan (BII) START_EXERCISE untuk memungkinkan pengguna memulai berbagai olahraga dengan meminta hal-hal kepada Asisten seperti, "Ok Google, mulai berlari di Aplikasi Contoh".

Untuk memenuhi intent ini, Anda memerlukan logika pencocokan permintaan untuk menangani setiap jenis olahraga, termasuk variasi seperti "jogja", "sprint", atau "lomba". Logika ini dengan cepat menjadi rumit saat olahraga yang didukung meningkat.

Untuk BII yang didukung, seperti START_EXERCISE, Anda dapat menghindari logika pencocokan yang kompleks ini dengan menggunakan inventaris inline. Inventaris inline adalah kumpulan pintasan Android statis yang ditentukan di shortcuts.xml yang merepresentasikan fitur dan konten di aplikasi Anda.

Setiap pintasan berisi ID item dan daftar sinonim yang mewakili variasi dalam cara pengguna merujuk ke item tersebut. Selama pemanggilan, BII membandingkan parameter BII yang diberikan pengguna dengan daftar sinonim. Jika ditemukan kecocokan, parameter BII akan diperbarui ke ID item pintasan yang cocok.

Inventaris inline memungkinkan Asisten Google menyederhanakan parameter value BII yang diberikan untuk aplikasi Anda selama pemanggilan Action Aplikasi.

Inventaris inline berfungsi seperti tabel pencarian untuk parameter BII, yang mengekspresikan berbagai cara pengguna merujuk ke fitur atau konten di aplikasi Anda menggunakan ID item yang Anda tentukan. Fungsi ini menyederhanakan logika pencocokan permintaan aplikasi dengan memungkinkan fulfillment Anda mengantisipasi ID item dari parameter BII.

Diagram alur pengguna inventaris inline
Gambar 1. Diagram alir kemampuan START_EXERCISE yang menggunakan inventaris inline guna menafsirkan nama olahraga yang diberikan pengguna untuk jenis olahraga yang didukung di aplikasi.

Batasan dan alternatif

Pintasan inventaris inline memiliki batasan berikut:

  • Batas pintasan: Maksimum 1.000 pintasan inventaris inline dapat ditentukan per aplikasi.
  • Batas sinonim: Setiap pintasan inventaris inline dapat berisi maksimum 20 nilai sinonim.
  • Definisi statis: Pintasan inventaris inline dideklarasikan secara statis di shortcuts.xml dan hanya dapat diperbarui untuk pengguna Anda dengan memublikasikan versi baru aplikasi.

Dengan mempertimbangkan persyaratan untuk konfigurasi statis, inventaris inline paling cocok untuk memperluas informasi aplikasi yang tidak sering berubah dan tidak dipersonalisasi ke Asisten, seperti item menu, rute bus, atau ukuran minuman. Untuk jenis konten lainnya, pertimbangkan alternatif berikut:

  • Inventaris web: memungkinkan Asisten membuat kueri konten web publik saat mencocokkan kueri pengguna dengan ID konten aplikasi yang didukung. Kueri inventaris web terjadi secara real time selama pemanggilan, sehingga Anda dapat memperluas katalog produk, postingan media sosial, dan konten lainnya yang sering diperbarui ke Asisten.

  • Pintasan dinamis: memperluas inventaris konten aplikasi yang dipersonalisasi ke Asisten. Pintasan dinamis memungkinkan pengguna memutar ulang tindakan umum dengan cepat, seperti mengurutkan ulang minuman favorit dari aplikasi pemesanan makanan atau membuka daftar belanja di aplikasi pencatatan.

Membuat inventaris inline

Inventaris inline menyederhanakan pengembangan dengan memberikan cara yang praktis kepada Asisten untuk menerjemahkan berbagai cara pengguna meminta konten dan fitur aplikasi ke dalam ID yang dapat diprediksi yang diharapkan oleh aplikasi Anda. Misalnya, aplikasi Anda menawarkan olahraga yang berbeda sehingga pengguna dapat mulai menggunakan suaranya, dan aplikasi Anda mengharapkan pengguna membuat permintaan berikut untuk jenis olahraga yang sama:

  • Ok Google, mulai lari di Aplikasi Contoh.
  • Ok Google, mulai joging di Aplikasi Contoh.

Dalam pintasan inventaris inline, Anda menetapkan shortcutId ke "CARDIO_RUN", ID olahraga yang diharapkan oleh aplikasi Anda. Anda kemudian menentukan "run" dan "jog" sebagai sinonim yang terkait dengan shortcutId. Kemudian, saat pengguna memicu Action Aplikasi Anda dengan kueri sebelumnya, Asisten akan menggunakan ID "CARDIO_RUN" untuk parameter BII saat membuat intent fulfillment.

Cuplikan berikut dari contoh file app/res/shortcuts.xml mengimplementasikan kasus ini:

<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>

Pada contoh sebelumnya, shortcut inventaris inline mendeklarasikan tag <parameter-binding> dalam elemen <capability-binding>, yang mengikatnya ke parameter BII exercise.name yang ditentukan dalam <capability>.

@array/run_names resource array string menentukan daftar sinonim dalam res/values/arrays.xml yang dikenali dan dipetakan Asisten ke ID item "CARDIO_RUN":

<!-- 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>

Jika <url-template> disediakan untuk kemampuan, shortcutId untuk nilai yang cocok disisipkan dalam URL yang dihasilkan pada placeholder yang sesuai untuk parameter. Kode berikut dari contoh file app/res/shortcuts.xml mengimplementasikan kasus ini:

<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>

Pada contoh sebelumnya, Asisten membuat deep link fulfillment myapp://workout?exercise=CARDIO_RUN.

Fulfillment menggunakan intent pintasan

Secara default, pintasan menyediakan shortcutId dari nilai inventaris inline yang cocok dengan intent dari capability tempat pintasan terikat, sebagaimana dideklarasikan di tag <capability-binding> pintasan. Anda dapat menentukan secara opsional bahwa intent yang ditentukan dalam pintasan itu sendiri digunakan untuk fulfillment dengan menambahkan tag <shortcut-fulfillment> ke capability.

Kode berikut dari contoh file app/res/shortcuts.xml menerapkan fulfillment pintasan:

<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>

Dalam contoh sebelumnya, jika kueri pengguna cocok dengan nilai inventaris inline untuk parameter exercise.name, tag <shortcut-fulfillment> akan menentukan bahwa intent pintasan terikat digunakan untuk fulfillment.

Inventaris inline untuk BII fitur aplikasi terbuka

Meskipun secara umum inventaris inline merupakan kemampuan opsional untuk BII yang mendukungnya, inventaris ini diperlukan untuk BII tertentu, seperti OPEN_APP_FEATURE. BII yang biasa digunakan ini memungkinkan pengguna melakukan deep link ke fitur aplikasi tertentu menggunakan Asisten. BII fitur aplikasi terbuka memerlukan inventaris inline nama fitur aplikasi untuk memverifikasi bahwa fitur yang diminta pengguna ada sebelum melakukan deep linking pengguna ke aplikasi Anda.

Kode berikut dari contoh file app/res/shortcuts.xml mengimplementasikan BII ini dengan satu pintasan yang mewakili fitur status pesanan aplikasi:

<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>

Resource array string dalam res/values/arrays.xml, @array/order_status_names, menentukan daftar sinonim fitur ini:

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

Dengan kemampuan sebelumnya, Asisten dapat memenuhi berbagai frasa untuk fitur yang sama:

  • "Ok Google, tampilkan status pesanan saya di Aplikasi Contoh".
  • "Ok Google, tampilkan pesanan saya di Aplikasi Contoh".
  • "Ok Google, tampilkan histori pesanan saya di Aplikasi Contoh".

Menguji inventaris inline

Uji inventaris Anda dengan memeriksa parameter value BII yang disediakan Asisten untuk aplikasi Anda, sekaligus memenuhi kemampuan Action Aplikasi yang relevan. Inventaris inline berfungsi dengan mengganti nilai yang diberikan pengguna dari parameter BII terikat inventaris dengan shortcutId pintasan inventaris inline yang cocok.

Misalnya, kemampuan BII START_EXERCISE mungkin menggunakan inventaris inline untuk menerjemahkan parameter BII yang diberikan pengguna "run" ke ID olahraga yang sesuai, "CARDIO_RUN".

Plugin Asisten Google memungkinkan Anda melihat pratinjau Action Aplikasi inventaris inline di Asisten pada perangkat pengujian. Uji inventaris Anda menggunakan plugin dengan mengikuti langkah-langkah berikut:

  1. Konfigurasikan parameter terikat inventaris kemampuan BII Anda dengan nilai sinonim yang terkait dengan inventaris inline Anda.
  2. Picu BII dari plugin, panggil BII di perangkat pengujian Anda.
  3. Periksa hasil parameter value yang diberikan Asisten untuk aplikasi Anda selama fulfillment Action Aplikasi.