Her uygulama farklıdır ve tüm uygulama işlevleri Uygulama İşlemleri yerleşik amacı (BII). Herhangi bir bir BII'yi seçerseniz bunun yerine özel bir BII kullanabilirsiniz. Niyetimiz, Uygulama İşlemleri'yle uygulamanızı genişletmek.
BBI'ler gibi özel amaçlar da
shortcuts.xml
şemasını tanımlayın ve
Asistan ile tanımladığınız karşılamalar arasındaki bağlantı noktaları. Özel
intent parametreleri de vardır. Bunları
sipariş karşılama ile ilgili e-postalar gönderilir.
BBI'lerden farklı olarak, özel amaçlar için sorgu kalıpları Kullanıcının söyleyebileceği örnek sorguları açıklar. Bu yaklaşım, yerleşik amaçları vardır.
Sınırlamalar
Özel amaçlar aşağıdaki sınırlamalara tabidir:
- Özel amaç adı
actions.intent
ile başlayamaz. - Özel amaca ait ad, diğer öğelere ait özel amaç adları arasında benzersiz olmalıdır. en iyi şekilde yararlanabilirsiniz.
- Google tarafından parametre ayıklama için yalnızca belirli veri türleri kullanılabilir Asistan (Desteklenen türler bölümüne bakın).
- Özel amaçlar, kullanılabilir sorgu kalıplarına ait örnekler içermelidir (Sorgu kalıpları bölümüne bakın).
- Her sorgu en fazla iki metin parametresini destekler. Bu sınır diğer veri türlerine uygulanır.
- Özel amaçlar yalnızca en-US yerel ayarını destekler. Ayrıca, cihaz ve Asistan dil ayarları eşleşmelidir.
Desteklenen türler
Özel amaçlar aşağıdaki schema.org türlerini destekler. parametre ayıklama:
https://schema.org/Text
https://schema.org/Date
https://schema.org/Time
https://schema.org/Number
Özel amaçlara sahip Uygulama İşlemleri tanımlama
BBI'leri kullanan diğer Uygulama İşlemlerinde olduğu gibi,
intent'deki <capability>
shortcuts.xml
Özellikler <shortcuts>
kök öğesinde tanımlanır. Google Takvim widget'ını
<shortcuts>
öğenizi tanımlayın,
aşağıdaki örnekte gösterildiği gibi, erişmek istediğiniz özellikleri seçin:
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
...
</shortcuts>
android:name
özelliğinde özel amacın adını girin ve
bir sorgu kalıpları kaynak dosyasına referans
queryPatterns
özelliği için geçerlidir.
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<capability
android:name="custom.actions.intent.EXAMPLE_INTENT"
app:queryPatterns="@array/ExampleQueries">
<intent ...>
<url-template
android:value="http://custom.com{?number_of_items,item_name}" />
<parameter
android:name="number_of_items"
android:key="number_of_items"
android:mimeType="https://schema.org/Number" />
<parameter
android:name="item_name"
android:key="item_name"
android:mimeType="https://schema.org/Text" />
</intent>
</capability>
...
</shortcuts>
Özel amaç adları şununla başlayamaz:
actions.intent
, bu ad alanı BBI'lere ayrılmıştır. Bunun yerine
özel amaçlarınızı adlandırırken
Özel amaçlarınızı her ikisinden ayırt etmek için custom.actions.intent
BigQuery'lerin (BII'ler) ve Android amaçlarının
farklı şekilde çalıştığını gösterebilir.
Her parametre için desteklenen schema.org türünü sağlayın.
parametrenin anlamını en iyi açıklayanı seçin. Örneğin,
Almayı düşündüğünüz bir tarihi belirtmek için https://schema.org/Date
:
...
<intent>
<url-template android:value="https://example.com/appt{?apptType,date,time}" />
<parameter
android:name="date"
android:key="date"
android:mimeType="https://schema.org/Date" />
...
</intent>
...
Aynı biçimi kullanarak shortcuts.xml
ürününde özel amaçlar için kısayollar tanımlayın
kısayolları olarak kullanılır.
Aşağıdaki kod, başvurulan sorguyu kullanan bir Uygulama İşlemini açıklar
SCHEDULE_APPOINTMENT
özel amacını tetiklemek için kalıplar kullanır ve
apptType
için DRIVERS_LICENSE
ve VEHICLE_REGISTRATION
değer grubu
parametresinden sonra bir değer girin.
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<capability
android:name="custom.actions.intent.SCHEDULE_APPOINTMENT"
app:queryPatterns="@array/scheduleApptQueries">
<intent ...>
<url-template android:value="https://example.com/appt{?apptType,date,time}" />
<parameter
android:name="date"
android:key="date"
android:mimeType="https://schema.org/Date" />
<parameter
android:name="time"
android:key="time"
android:mimeType="https://schema.org/Time" />
<!-- The following parameter has no type because the shortcuts are bound to it -->
<parameter android:name="apptType" android:key="apptType" />
</intent>
</capability>
<shortcut
android:shortcutShortLabel="Driver's License"
android:shortcutId="DRIVERS_LICENSE">
<capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
<parameter-binding
android:key="apptType"
android:value="@string/driversLicense" />
</capability-binding>
</shortcut>
<shortcut
android:shortcutsShortLabel="Vehicle Registration"
android:shortcutId="VEHICLE_REGISTRATION">
<capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
<parameter-binding
android:key="apptType"
android:value="@string/vehicleRegistration" />
</capability-binding>
</shortcut>
</shortcuts>
Özel amaç parametrelerini satır içi envanter ile yapılandırabilirsiniz.
Varlık çıkarma işlemini desteklenen bir dizi öğeye yönlendirmek için kullanabileceğiniz
shortcuts.xml
içinde belirtilir.
Sorgu kalıpları
Kullandığınız her özel amaç, söyleyebildim. Bu yaklaşım, sorguların zaten mevcut olduğu kullanıcıların yapmaya çalıştıkları görevleri ifade ettikleri yaygın kullanım şekilleri için modellenir bilgi ediniyorlar.
Android kaynak dosyasında (genellikle /res/values/strings.xml
) sorguyu belirtin
kalıpları, dize dizisi içindeki öğeler olarak kabul edilir.
Uygulama İşlemi çağrıldığında, Google Asistan kullanıcı sorgusunu
kullanıcının istek karşılama amacını eşleştirmenin bir parçası olarak sorgu kalıplarından bahsedeceğiz. Her bir sorgu
belirttiğiniz model, o terim için geçerli olduğunu düşündüğünüz bir ifadeyi
karşılık gelen özel amaçtır.
Özel amaçlar için sorgu kalıpları sağlarken her kalıbın "Örnek Uygulamayı aç ve" gibi açık bir çağrı veya "Örnek Uygulama'yı başlat ve" gibi bir ifade kullanabilirsiniz. Örneğin, aşağıdaki kullanıcı sorgularını göz önünde bulundurun:
- "Ok Google, Örnek Oyun Uygulaması'nı aç ve pasta yapmaya başla."
- "Ok Google, Örnek Oyun Uygulaması'nı aç ve elmalı turta yapmaya başla."
- "Ok Google, Örnek Oyun Uygulaması'nı başlat ve 5 pasta öğesi yap."
- "Ok Google, 5 kez pasta yapmak için Örnek Oyun Uygulaması'nı kullan."
Kullanıcı sorgularını eşleştirmek için, sorgusuna karşılık gelir. Aygıtınızdan çıkarmak istediğiniz bilgiler için bir sorgu (örneğin, kullanıcının sağladığı metin veya sayı) sorgu kalıbında yer tutuculara sahip karşılık gelen intent parametresi
Sorgu kalıbındaki bir parametreye referans vermek için$
parametresini kullanabilirsiniz. Örneğin, bir
parametresini
<parameter name="date1" ...
(actions.xml
içinde) veya
<parameter android:name="date1" ...
(shortcuts.xml
uygulamasında), $date1
kullanıyorsunuz.
Aşağıdaki kod, önceki kullanıcıyla eşleşen sorgu kalıplarını açıklar öğe adları ve yapılacak öğe sayısı için değerleri ayıklayın:
<resources>
<string-array name="ExampleQueries">
<item>start making a $text1</item>
<item>start making an $text1</item>
<item>craft $number1 $text1 items</item>
<item>produce $text1 $number1 times</item>
</string-array>
</resources>
Sorgu kalıpları, koşulları destekler. Örneğin, set (an)? appointment
$date $time
. Bu durumda, her ikisi de "bugün öğlen randevusu ayarla" ve
"bugün öğlen randevu ayarla" geçerli sorgulardır.