Satır içi envanter

Android uygulamanız için Uygulama İşlemleri'ni uyguladığınızda, bir temanın varyasyonları olan istekleri ele almak zorunda kalabilirsiniz. Örneğin, fitness uygulamanızın, kullanıcıların Asistan'a "Ok Google, Örnek Uygulama'da koşu başlat" gibi sorular sorarak çok çeşitli antrenmanlar başlatmasını sağlamak için START_EXERCISE yerleşik amacını (BII) uyguladığını varsayalım.

Bu amacın yerine getirilmesi için istek eşleştirme mantığınızın "jog", "sprint" veya "yarış" gibi varyasyonlar da dahil olmak üzere her antrenman türünü işlemesi gerekir. Desteklenen antrenmanlar arttıkça bu mantık kısa sürede kullanışsız hale gelir.

START_EXERCISE gibi desteklenen BBI'ler için satır içi envanter kullanarak bu karmaşık eşleştirme mantığından kaçınabilirsiniz. Satır içi envanter, shortcuts.xml politikasında tanımlanan ve uygulamanızdaki özellikleri ve içeriği temsil eden statik Android kısayolları grubudur.

Her kısayol, bir öğe tanımlayıcısı ve kullanıcıların öğeye başvurma şeklindeki varyasyonları temsil eden eş anlamlıların bir listesini içerir. Çağrı sırasında BII, kullanıcı tarafından sağlanan BII parametresini eş anlamlılar listesiyle karşılaştırır. Bir eşleşme bulunduğunda BII parametresi, eşleşen kısayolun öğe tanımlayıcısıyla güncellenir.

Satır içi envanter, Google Asistan'ın Uygulama İşlemi çağrıları sırasında uygulamanıza sağlanan BII parametre değerlerini basitleştirmesini sağlar.

Satır içi envanterler, BII parametreleri için arama tabloları gibi çalışarak kullanıcıların tanımladığınız öğe tanımlayıcılarını kullanarak uygulamanızdaki özelliklere veya içeriklere başvuruda bulunma yollarını ifade eder. Bunlar, istek karşılamalarınızın BII parametrelerinden öğe tanımlayıcılarını tahmin etmesini sağlayarak uygulamanızın istek eşleştirme mantığını basitleştirir.

Satır içi envanter kullanıcı akışı şeması
Şekil 1. Uygulamada desteklenen egzersiz türleri için kullanıcı tarafından sağlanan antrenman adlarını yorumlamak amacıyla satır içi envanter kullanan START_EXERCISE özelliğinin akış diyagramı.

Sınırlamalar ve alternatifler

Satır içi envanter kısayollarında aşağıdaki sınırlamalar geçerlidir:

  • Kısayol sınırı: Uygulama başına maksimum 1.000 satır içi envanter kısayolu tanımlanabilir.
  • Eş anlamlı sınırı: Her satır içi envanter kısayolu en fazla 20 eş anlamlı değer içerebilir.
  • Statik tanım: Satır içi envanter kısayolları shortcuts.xml içinde statik olarak beyan edilir ve yalnızca uygulamanızın yeni bir sürümünü yayınlayarak kullanıcılarınız için güncellenebilir.

Statik yapılandırma gereksinimi nedeniyle, satır içi envanter en çok menü öğeleri, otobüs rotaları veya içecek boyutları gibi sık sık değişen, kişiselleştirilmemiş uygulama bilgilerini Asistan'a genişletmek için uygundur. Diğer içerik türleri için şu alternatifleri değerlendirin:

  • Web envanteri: Kullanıcı sorgularını desteklenen uygulama içeriği tanımlayıcılarıyla eşleştirirken Asistan'ın herkese açık web içeriğini sorgulamasına olanak tanır. Web envanteri sorguları bir çağrı sırasında gerçek zamanlı olarak gerçekleşir. Böylece ürün kataloglarını, sosyal medya yayınlarını ve sık sık güncellenen diğer içerikleri Asistan'a genişletebilirsiniz.

  • Dinamik kısayollar: Kişiselleştirilmiş uygulama içeriği envanterini Asistan'a genişletir. Dinamik kısayollar, kullanıcıların bir yemek siparişi uygulamasından en sevdikleri içeceği yeniden sipariş etmek veya not alma uygulamasında alışveriş listesi açmak gibi sık yapılan işlemleri hızlı bir şekilde tekrar oynatmalarına olanak tanır.

Satır içi envanter oluşturma

Satır içi envanter, kullanıcıların uygulamanızın içeriği ve özellikleri için istekte bulunma yöntemlerini uygulamanızın beklediği tahmin edilebilir tanımlayıcılara çevirmesi için Asistan'a pratik bir yöntem sunarak geliştirme sürecini basitleştirir. Örneğin, uygulamanızın kullanıcıların seslerini kullanmaya başlayabilecekleri farklı antrenmanlar sunduğunu ve uygulamanızın kullanıcıların aynı egzersiz türü için aşağıdaki istekleri yapmasını beklediğini varsayalım:

  • Ok Google, Örnek Uygulama'da çalıştırma işlemi başlat.
  • Ok Google, Örnek Uygulama'da koşu başlat.

Satır içi envanter kısayolunuzda shortcutId özelliğini, uygulamanızın beklediği egzersiz tanımlayıcısı olan "CARDIO_RUN" olarak ayarlarsınız. Daha sonra "koşu" ve "jog" kelimelerini shortcutId ile ilişkili eş anlamlılar olarak belirtirsiniz. Ardından bir kullanıcı, Uygulama İşleminizi önceki sorgularla tetiklediğinde Asistan, istek karşılama amacı oluştururken BII parametresi için "CARDIO_RUN" tanımlayıcısını kullanır.

Örnek bir app/res/shortcuts.xml dosyasındaki aşağıdaki snippet bu durumu uygular:

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

Önceki örnekte, satır içi envanter shortcut, <capability-binding> öğesi içinde bir <parameter-binding> etiketi tanımlayarak bu etiketi <capability> içinde tanımlanan exercise.name BII parametresine bağlar.

@array/run_names dize dizisi kaynağı, res/values/arrays.xml içinde Asistan'ın tanıdığı ve "CARDIO_RUN" öğe kimliğiyle eşlediği eş anlamlıların bir listesini belirtir:

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

Özellik için bir <url-template> sağlandığında, oluşturulan URL'ye parametreye karşılık gelen yer tutucuda eşleşen bir değer için shortcutId eklenir. Örnek bir app/res/shortcuts.xml dosyasındaki şu kod bu durumu uygular:

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

Yukarıdaki örnekte Asistan, istek karşılama derin bağlantısını myapp://workout?exercise=CARDIO_RUN oluşturur.

Kısayol amaçlarını kullanarak istek karşılama

Varsayılan olarak bir kısayol, <capability-binding> etiketinde belirtildiği gibi kısayolun bağlı olduğu capability öğesinin intent öğesinde, eşleşen satır içi envanter değerinin shortcutId değerini sağlar. Alternatif olarak, capability öğesine bir <shortcut-fulfillment> etiketi ekleyerek kısayolda tanımlanan bir intent öğesinin istek karşılama için kullanılmasını da belirtebilirsiniz.

Örnek bir app/res/shortcuts.xml dosyasındaki şu kod, kısayol istek karşılamayı uygular:

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

Önceki örnekte, kullanıcı sorgusu exercise.name parametresi için bir satır içi envanter değeriyle eşleşirse <shortcut-fulfillment> etiketi, istek karşılama için bağlı kısayolun intent değerinin kullanıldığını belirtir.

Açık uygulama özelliği BII için satır içi envanter

Satır içi envanter genellikle onu destekleyen BiI'lar için isteğe bağlı bir özelliktir, ancak OPEN_APP_FEATURE gibi belirli BBI'ler için gereklidir. Yaygın olarak kullanılan bu BII, kullanıcıların Asistan'ı kullanarak belirli uygulama özelliklerine derin bağlantı kurmasına olanak tanır. Açık uygulama özelliği BII, kullanıcıyla uygulamanız arasında derin bağlantı oluşturmadan önce kullanıcının istediği bir özelliğin var olduğunu doğrulamak için uygulama özelliği adlarının satır içi envanterini gerektirir.

Örnek bir app/res/shortcuts.xml dosyasındaki aşağıdaki kod, bu BII'yi uygulamanın sipariş durumu özelliğini temsil eden tek bir kısayolla uygular:

<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 içindeki dize dizisi kaynakları, @array/order_status_names, bu özelliğin eş anlamlılarının listesini belirtir:

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

Önceki işlev kullanılırken Asistan aynı özellik için çeşitli ifadeleri yerine getirebilir:

  • "Ok Google, Örnek Uygulama'da sipariş durumumu göster."
  • "Ok Google, siparişlerimi Örnek Uygulama'da göster."
  • "Ok Google, Örnek Uygulama'da sipariş geçmişimi göster."

Satır içi envanteri test etme

Asistan'ın uygulamanıza sağladığı BII parametre değerlerini inceleyerek envanterinizi test ederken bir yandan da alakalı Uygulama İşlemi özelliklerini karşılayın. Satır içi envanter, envantere bağlı BII parametresinin kullanıcı tarafından sağlanan değerini eşleşen bir satır içi envanter kısayolunun shortcutId ile değiştirerek çalışır.

Örneğin, bir START_EXERCISE BII özelliği, kullanıcı tarafından sağlanan BII parametresini "run" yerine karşılık gelen egzersiz kimliğine ("CARDIO_RUN") çevirmek için satır içi envanter kullanabilir.

Google Asistan Eklentisi, bir test cihazında Asistan'daki satır içi envanter Uygulama İşlemlerinizi önizlemenize olanak tanır. Aşağıdaki adımları uygulayarak eklentiyi kullanarak envanterinizi test edin:

  1. BII özelliğinizin envantere bağlı parametrelerini, satır içi envanterinizle ilişkili eş anlamlı değerlerle yapılandırın.
  2. BII'yi eklentiden tetikleyin ve test cihazınızda çağırın.
  3. Uygulama İşlemi istek karşılama sırasında Asistan'ın uygulamanıza sağladığı parametre değerlerini inceleyin.