Özel amaçlar

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.