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ı](https://developer.android.com/static/guide/app-actions/images/appactions-inline-inventory-flow.png?authuser=5&hl=tr)
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:
- BII özelliğinizin envantere bağlı parametrelerini, satır içi envanterinizle ilişkili eş anlamlı değerlerle yapılandırın.
- BII'yi eklentiden tetikleyin ve test cihazınızda çağırın.
- Uygulama İşlemi istek karşılama sırasında Asistan'ın uygulamanıza sağladığı parametre değerlerini inceleyin.