Membuat actions.xml (tidak digunakan lagi)

Setelah Anda mengidentifikasi fungsi dalam aplikasi dan intent bawaan (BII) yang ingin diterapkan, buat resource actions.xml di aplikasi Android yang memetakan BII untuk fungsi aplikasi Anda. Action Aplikasi yang ditentukan dalam actions.xml menjelaskan cara setiap BII menyelesaikan fulfillment-nya, serta parameter yang diekstrak dan disediakan ke aplikasi Anda.

Ringkasan

Untuk mengintegrasikan aplikasi Android dengan Action Aplikasi, Anda harus memiliki file actions.xml yang ditempatkan di direktori res/xml project aplikasi Anda.

Tambahkan referensi ke file actions.xml dalam file AndroidManifest.xml menggunakan tag <meta-data>. Contoh:

<application>
    <!-- ... -->
    <meta-data android:name="com.google.android.actions" android:resource="@xml/actions" />
</application>

Tindakan ini mendeklarasikan resource XML untuk file xml/actions.xml dalam APK. Untuk mempelajari lebih lanjut cara menentukan resource di Android, lihat Ringkasan resource aplikasi dalam dokumentasi developer Android.

Skema

Tabel berikut menjelaskan skema untuk actions.xml. Saat menyertakan tag, semua atributnya wajib ada kecuali jika ditandai "opsional".

Tag Ada dalam Atribut
<actions> tingkat teratas
<action> <actions>

intentName

queryPatterns (hanya berlaku untuk intent kustom)

<parameter> <action> name
<entity-set-reference> <parameter>

entitySetId ATAU

urlFilter

<fulfillment> <action>

urlTemplate

fulfillmentMode (opsional)

requiredForegroundActivity (opsional)

<parameter-mapping> <fulfillment>

urlParameter

intentParameter

required (opsional)

entityMatchRequired (opsional)

<entity-set> <actions> entitySetId
<entity> <entity-set>

name (dan secara opsional alternateName) ATAU

sameAs

identifier ATAU url

Deskripsi tag

Bagian ini menjelaskan berbagai tag skema untuk actions.xml.

<action>

Action Aplikasi yang didukung aplikasi. Untuk setiap tag <action> dalam file actions.xml, Anda harus memberikan setidaknya satu <fulfillment>.

Atribut:

  • intentName: Intent bawaan untuk Action Aplikasi (misalnya, actions.intent.CREATE_TAXI_RESERVATION). Untuk daftar intent bawaan yang didukung, lihat referensi intent bawaan.

  • queryPatterns: Kumpulan kueri yang diharapkan dari pengguna untuk intent ini. Atribut ini hanya berlaku untuk intent kustom, karena BII sudah menyertakan model tentang cara umum pengguna mengekspresikan tugas yang coba mereka lakukan, atau informasi yang mereka cari.

<parameter>

Parameter Action Aplikasi yang memiliki nama dan daftar entitas terkait.

Atribut:

  • name: Nama yang akan dikaitkan dengan parameter ini (misalnya, "destination"). Nama harus berupa kolom tingkat ikon daun nest parameter (misalnya, tradeOrder.assetOrdered.assetIssuedBy.name). Jika parameter adalah jenis primitif, seperti string, maka namanya hanyalah nama parameter itu sendiri.

<entity-set-reference>

Referensi ke feed schema.org yang disediakan developer. Feed harus disediakan langsung di file actions.xml menggunakan tag <entity-set>.

Atribut:

  • entitySetId: Referensi ke koleksi entitas tertentu. Atribut ini harus sesuai dengan entitySetId dalam tag <entity-set>.

  • urlFilter: Jalur URL yang digunakan saat menyediakan inventaris web untuk fulfillment. Atribut ini mendukung dua karakter pengganti:

    • *: Tanda bintang cocok dengan urutan nol hingga banyak kemunculan karakter sebelumnya.

    • .*: Titik diikuti tanda bintang cocok dengan urutan apa pun dari nol hingga sekian karakter.

    • Karakter escape hanya diperlukan untuk * dan \ literal, yang masing-masing dapat Anda escape sebagai \\* dan \\\\.

<fulfillment>

Informasi tentang cara memenuhi intent pengguna menggunakan aplikasi Android. Developer dapat memberikan beberapa tag <fulfillment> di actions.xml, dengan kumpulan parameter wajib yang berbeda untuk setiap intent.

Google menggunakan <fulfillment> pertama yang semua parameternya tersedia untuk memenuhi kueri pengguna. Anda harus menyediakan satu <fulfillment> tanpa parameter yang diperlukan sebagai fulfillment penggantian.

Atribut:

  • urlTemplate: Template untuk membuat deep link atau URI Slice yang akan dibuka di perangkat. Template dapat diluaskan dengan parameter intent pengguna jika semua parameter yang diperlukan untuk template tersedia. Untuk contoh template URL HTTP, lihat artikel Wikipedia tentang template URL. Format template mengikuti spesifikasi template URI RFC 6570.

  • fulfillmentMode: (opsional) Mode fulfillment yang digunakan untuk penayangan. Nilai yang valid adalah:

    • actions.fulfillment.DEEPLINK: Memenuhi tindakan pengguna dengan membuka aplikasi Android menggunakan deep link. Ini adalah defaultnya.

    • actions.fulfillment.SLICE: Memenuhi tindakan pengguna dengan menyematkan Slice yang disediakan oleh aplikasi Android.

  • requiredForegroundActivity: (opsional) Menunjukkan aktivitas yang harus ada di latar depan agar Action Aplikasi dipicu dengan pemanggilan aplikasi latar depan.

    • Tentukan aktivitas tanpa singkatan class menggunakan nama paket aplikasi Anda, diikuti dengan garis miring (/), diikuti dengan nama aktivitas: APP_PACKAGE_NAME/ACTIVITY_NAME

Berikut adalah beberapa contoh nilai template URL:

Template Nilai Nilai yang diperluas
https://example.com/test{?foo,bar} "foo": "123"

"bar": "456"

https://example.com/test?foo=123&bar=456
https://example.com/test?utm_campaign=appactions{&foo,bar} "foo": "123"

"bar": "456"

https://example.com/test?utm_campaign=appactions&foo=123&bar=456
https://example.com/test?utm_campaign=appactions{#foo} "foo": "123" https://example.com/test?utm_campaign=appactions#foo=123
myapp://example/{foo} "foo": "123" myapp://example/123
intent://foo#Intent;scheme=my-scheme{;S.extra1,S.extra2};end "S.extra1": "123"

"S.extra2": "456"

intent://foo#Intent;scheme=my-scheme;S.extra1=123;S.extra2=456;end

Untuk informasi selengkapnya tentang cara mengonfigurasi template URL, lihat Template URL dalam fulfillment.

<parameter-mapping>

Pemetaan dari parameter intent ke variabel di template URL. Kunci dalam peta ini menampilkan parameter template URL, atau "variabel" seperti yang dijelaskan dalam RFC 6570.

Jika suatu parameter tidak disertakan dalam intent, variabel yang sesuai akan dibiarkan tidak ditentukan pada saat perluasan template URL. Lihat RFC 6570, Bagian 3.2.1 untuk deskripsi tentang cara diperlakukannya variabel yang tidak ditentukan.

Perlu diperhatikan bahwa required="true" dan entityMatchRequired="true" berbeda.

Atribut:

  • urlParameter: Setiap variabel yang disebutkan dalam template URL harus memiliki urlParameter yang sesuai di <parameter-mapping>. Misalnya, jika uri_template adalah http://spysatellite.com/show{?lat,long}, harus ada kunci di <parameter-mapping> untuk parameter lat dan long.

  • intentParameter: Nilai merujuk pada parameter intent. Jika parameter intent berupa jenis terstruktur, gunakan notasi titik untuk merujuk pada kolom bertingkat. Misalnya, jika ada parameter taxiReservation dari jenis schema.org/TaxiReservation, Anda dapat menggunakan taxiReservation.pickupLocation.geo.latitude untuk merujuk ke nilai lintang.

    Jika memberikankumpulan entitas untuk parameter ini, intentParameter harus sama persis dengan nama tag <parameter> yang sesuai (misalnya, taxiReservation.pickupLocation.geo.latitude ). Jika parameter intent memiliki jenis yang kompleks, nilai harus sesuai dengan referensi objek untuk parameter (misalnya, taxiReservation). Jika parameter intent memiliki jenis primitif, nilainya harus berupa nama parameter itu sendiri.

  • required: (opsional) Menunjukkan bahwa intentParameter tertentu harus ada agar template URL ini valid. Template URL akan dihapus jika kueri pengguna tidak menyertakan nilai untuk intentParameter yang ditentukan.

  • entityMatchRequired: (opsional) Menunjukkan bahwa inventaris yang cocok untuk intentParameter yang ditentukan harus ada. Default-nya adalah false.

    Jika atribut ini ditetapkan ke true, jika ada kecocokan inventaris, ID dari kecocokan tersebut akan diteruskan ke template URL. Jika tidak, Asisten akan melewati fulfillment jika tidak ada kecocokan.

    Jika atribut ini ditetapkan ke false, jika ada kecocokan inventaris, ID dari kecocokan tersebut akan diteruskan ke template URL. Jika tidak, Asisten akan memberikan parameter value BII yang diekstrak dari kueri pengguna.

<entity-set>

Kumpulan entitas inline di actions.xml.

Atribut:

  • entitySetId: ID unik yang diperlukan untuk <entity-set> di actions.xml (misalnya, "myInlineEntitySet1"). Nilai ini juga harus sesuai dengan nilai <entitySetId> dalam tag <entity-set-reference>.

    Nilai untuk entitySetId harus berisi maksimal 30 karakter alfanumerik (tanpa karakter khusus seperti - atau _), dan dimulai dengan huruf.

<entity>

Elemen di antara kumpulan entitas yang disisipkan di actions.xml. Berisi subkumpulan kolom schema.org/Thing.

Nilai string untuk kolom url, identifier, dan kolom sameAs dapat di-hard code atau direferensikan melalui resource string APK. Saat memberikan sinonim, gunakan nilai string untuk kolom alternateName yang mereferensikan resource array string APK.

Atribut:

  • name: Nama wajib untuk entitas, kecuali jika Anda menentukan kolom sameAs. Harus unik di seluruh kolom name dan alternateName entitas untuk <entity-set> yang ditentukan (misalnya, "pasta gigi").

  • alternateName: (opsional) Nama alternatif untuk entitas. Anda harus menentukan kolom name sebelum menentukan kolom alternateName. Harus unik di seluruh kolom name dan alternateName entitas untuk <entity-set> yang ditentukan. Entitas dipilih jika kueri pengguna cocok dengan salah satu string ini.

  • sameAs: URL halaman web referensi yang secara jelas mengidentifikasi entitas. Digunakan untuk menentukan nilai enum jika dan hanya jika jenis parameter intent adalah subjenis schema.org/Enumeration.

    Wajib untuk kolom parameter yang jenisnya adalah subjenis schema.org/Enumeration (misalnya: MealTypeBreakfast).

  • identifier: ID untuk entitas. Harus unik di seluruh entitas untuk <entity-set> yang ditentukan (misalnya, CAPPUCCINO_ID).

  • url: URL RFC 3986 akan dibuka di perangkat Android. URL dapat atau tidak dapat diselesaikan oleh klien HTTP. Misalnya, di Android, URL dapat berupa URL "http://" yang ditautkan ke aplikasi atau URL khusus perangkat, seperti URL "intent://" atau URL di skema URL kustom.

    Anda dapat menggunakan kolom url bersama atribut urlTemplate dari <fulfillment> dengan cara berikut:

    • Berikan nilai url dalam inventaris inline, dan hapus urlTemplate dalam <fulfillment>.

    • Berikan nilai url dalam inventaris inline, dan gunakan nilai tersebut dalam nilai urlTemplate (misalnya, {@url}?extra_param=ExampleValue).

identifier atau url harus diberikan. Semua entitas dalam kumpulan entitas tertentu harus menggunakan atribut yang sama (identifier atau url).

Inventaris inline untuk Action Aplikasi

Untuk beberapa intent bawaan, Anda dapat memandu ekstraksi entitas secara opsional ke rangkaian entitas didukung yang ditentukan dalam actions.xml, yang dikenal sebagai inventaris inline. Saat pengguna memanggil Action Aplikasi Anda, Asisten mencocokkan parameter kueri pengguna dengan entitas yang ditentukan sebagai inventaris inline. Kemudian, Asisten Google dapat menggunakan ID yang sesuai dengan item inventaris saat membuat deep link untuk fulfillment.

Anda menentukan inventaris inline terutama menggunakan elemen <entity-set> dan <entity>. Inventaris inline menyederhanakan pengembangan dengan memungkinkan aplikasi Anda hanya menangani ID atau URL dari pemanggilan Action Aplikasi daripada perlu mengenali string atau nilai enumerasi Google.

Misalnya, aplikasi Anda menawarkan berbagai minuman yang dapat dipesan pengguna, dan Anda mengharapkan pengguna membuat permintaan berikut untuk jenis minuman yang sama:

  • Ok Google, pesan Blueberry Crisp Iced Signature Latte dari ExampleApp.

  • Ok Google, pesan Blueberry Iced Coffee dari ExampleApp.

Dalam inventaris inline, tentukan "Blueberry Crisp Iced Signature Latte" sebagai entitas yang sesuai dengan 12345a ID. Anda juga menentukan "Blueberry Iced Coffee" sebagai entitas yang sesuai dengan ID yang sama. Sekarang, ketika pengguna memicu Action Aplikasi Anda dengan kueri di atas, Asisten dapat menggunakan ID "12345a" saat membuat deep link untuk fulfillment.

Anda dapat menentukan hingga 1.000 entitas per aplikasi di semua kumpulan entitas. Maksimal 20 nilai sinonim alternateName dapat ditentukan per <entity>.

Inventaris web untuk Action Aplikasi

Untuk beberapa intent bawaan, Anda dapat menggunakan inventaris web sebagai metode untuk menghasilkan URL untuk fulfillment. Inventaris web menggunakan situs Anda untuk menemukan URL fulfillment Action Aplikasi. Fitur ini paling berguna saat Anda memiliki ketersediaan web yang kuat dan deep link dalam aplikasi diatur seputar konten web yang tersedia untuk publik.

Untuk menggunakan inventaris web, update actions.xml:

  1. Pada tag <action> tempat Anda ingin menggunakan inventaris web, tambahkan tag <fulfillment> dan tetapkan atribut urlTemplate-nya ke {@url}.

  2. Dalam tag <action> yang sama, tambahkan tag <parameter> dan tetapkan atribut name-nya ke parameter intent bawaan yang paling terkait dengan entitas yang dijelaskan oleh halaman web Anda. Misalnya, saat menyediakan inventaris web untuk ORDER_MENU_ITEM, Anda harus menautkan halaman menu ke menuItem.name dan menautkan halaman lokasi restoran ke menuItem.inMenuSection.inMenu.forRestaurant.name.

  3. Pada tag <parameter> baru, tambahkan tag <entity-set-reference> dan tetapkan atribut urlFilter-nya ke jalur URL yang ingin Anda gunakan untuk inventaris web.

Dengan melakukan langkah-langkah di atas, Asisten dapat melakukan penelusuran web di jalur URL yang Anda berikan dalam atribut urlFilter. Kemudian, Asisten Google akan memberikan nilai {@url} ke fulfillment Anda menggunakan hasil tersebut. Pengendali deep link Anda kemudian dapat mengarahkan pengguna berdasarkan deep link yang ditampilkan oleh Asisten untuk fulfillment tersebut.

Misalnya, asumsikan situs Anda berisi listingan produk yang menggunakan jalur yang diawali dengan https://www.example.com/items/. Anda menggunakan nilai urlFilter https://www.example.com/items/.*, lalu Asisten akan menampilkan URL fulfillment seperti https://www.example.com/items/item123. Lihat <entity-set-reference> untuk mengetahui informasi tentang atribut urlFilter.

Template URL dalam fulfillment

Dalam tag <fulfillment>, Anda dapat mendeklarasikan template URL dengan placeholder untuk parameter dinamis. Template ini dipetakan ke salah satu aktivitas Android Anda, menggunakan URL Link Aplikasi, skema kustom, atau URL berbasis intent.

Mengonfigurasi template URL

Contoh URL Link Aplikasi:

<action intentName="actions.intent.CREATE_TAXI_RESERVATION">
    <fulfillment urlTemplate="http://my-taxi.com/order{?dropoffLocation}">
        <parameter-mapping
                intentParameter="taxiReservation.dropoffLocation.name"
                urlParameter="dropoffLocation"/>
    </fulfillment>
</action>

Contoh skema kustom:

<action intentName="actions.intent.CREATE_TAXI_RESERVATION">
    <fulfillment urlTemplate="mytaxi://reserve{?dropoffLocation}">
        <parameter-mapping
                intentParameter="taxiReservation.dropoffLocation.name"
                urlParameter="dropoffLocation"/>
    </fulfillment>
</action>

Contoh URL berbasis intent:

<action intentName="actions.intent.CREATE_TAXI_RESERVATION">
    <fulfillment
            urlTemplate="intent:#Intent;package=com.example.myapp;action=com.example.myapp.MY_ACTION{;S.dropoff};end">
        <parameter-mapping
                intentParameter="taxiReservation.dropoffLocation.name"
                urlParameter="S.dropoff"/>
    </fulfillment>
</action>

Saat menentukan tag <parameter-mapping> untuk fulfillment, atribut intentParameter menunjukkan parameter intent bawaan yang diberikan oleh pengguna. Dalam contoh di atas, parameter tersebut adalah nama lokasi pengguna yang tidak menyelesaikan survei (taxiReservation.dropoffLocation.name). Anda dapat menemukan parameter yang tersedia untuk setiap intent bawaan yang ditentukan dalam referensi intent bawaan.

Untuk memetakan parameter intent bawaan ke posisi di URL, gunakan atribut urlParameter dari tag <parameter-mapping>. Atribut ini sesuai dengan nilai placeholder di template URL yang ingin Anda ganti dengan informasi dari pengguna. Nilai placeholder harus ada dalam urlTemplate dan diapit oleh tanda kurung kurawal ({}).

URL Link Aplikasi

Jika Anda menggunakan URL Link App, urlTemplate akan mengarah ke URL HTTP reguler yang dapat memicu Aktivitas Anda. Parameter diteruskan sebagai parameter URL ke URL Link Aplikasi. Parameter di urlTemplate harus diapit dalam tanda kurung kurawal ({}) dan diawali dengan tanda tanya (?). Jika parameter tidak ditetapkan, parameter (termasuk kurung kurawal) akan dihilangkan dari hasil.

Misalnya, jika pengguna memicu Action Aplikasi dengan permintaan untuk memesan taksi ke San Francisco, URI akhir yang dipicu (setelah penggantian parameter) adalah sebagai berikut:

https://mydomain.com/order?action=com.example.myapp.MY_ACTION&dropoff=San+Francisco

URL berbasis intent

Jika Anda menggunakan URL berbasis intent, nilai urlTemplate akan menyertakan nama paket, tindakan Intent, dan satu Intent tambahan, yang disebut "dropoff". Tambahan diawali dengan "S". untuk menunjukkan tambahan Intent String (seperti yang ditentukan oleh Intent.toUri()) dan diapit oleh tanda kurung kurawal untuk menunjukkan penggantian dengan parameter. Titik koma tambahan sebelumnya diperlukan untuk memisahkan tindakan Intent dari tambahan Intent (dan hanya disertakan jika parameter ditetapkan).

Pada contoh yang ada, nilai urlParameter ditetapkan ke S.dropoff; Anda dapat melihat tempat kemunculannya di URL kami dengan mencari nilai ini di urlTemplate.

Misalnya, jika pengguna memicu Action kami dengan meminta pesanan kendaraan ke "San Francisco", URI akhir yang terpicu (setelah penggantian parameter) akan menjadi:

intent:#Intent;package=com.example.myapp;action=com.example.myapp.MY_ACTION;S.dropoff=San+Francisco;end

Untuk informasi selengkapnya tentang intent, lihat dokumentasi intent Android.

Menggunakan nilai URL dari entitas dalam template URL

Secara default, jika <entity> cocok dengan kueri pengguna, nilai atribut identifier akan diteruskan ke template URL. Untuk mereferensikan atribut url dari <entity>, gunakan {@url} di template URL dan jangan gunakan tag <parameter-mapping>. Perlu diketahui bahwa nilai ID adalah URL yang di-escape, tetapi nilai atribut url tidak akan berubah.

Jika fulfillment menggunakan {@url} di template URL, fulfillment akan mencoba mendapatkan {@url} dari sumber seperti inventaris web dan inline. Jika inventaris web dan inline merupakan sumber potensial untuk mendapatkan {@url}, inventaris web akan diprioritaskan.

Contoh:

<fulfillment urlTemplate="{@url}">
    <!-- No parameter-mapping is needed -->
</fulfillment>
<entity-set entitySetId="...">
    <entity name="..." url="https://my.url.fulfillment/1"/>
    <entity name="..." url="https://my.url.fulfillment/2"/>
</entity-set>

Parameter {@url} dapat digabungkan dengan parameter lain. Contoh:

<fulfillment urlTemplate="{@url}?referrer=actions_on_google{&amp;other_param}">
    <parameter-mapping intentParameter="otherParam.name" urlParameter="other_param"/>
</fulfillment>
<entity-set entitySetId="...">
    <entity name="..." url="https://my.url.fulfillment/1"/>
    <entity name="..." url="https://my.url.fulfillment/2"/>
</entity-set>

Pencocokan parameter

Cara Google mencocokkan parameter dari ucapan pengguna dengan entitas yang Anda tentukan bergantung pada jenis parameternya:

  • Enum: Google mencocokkan kueri pengguna ("monday") dengan URL enum terkait ("http://schema.org/Monday"), lalu memilih entitas yang nilai sameAs-nya cocok dengan URL enum.
  • String: Google memilih entitas yang nilai name atau alternateName-nya cocok dengan kueri pengguna.

Contoh

Bagian di bawah ini menunjukkan contoh cara menggunakan intent bawaan di actions.xml.

Keuangan - rekening dan pembayaran

Contoh actions.xml berikut menggunakan intent bawaan actions.intent.CREATE_MONEY_TRANSFER:

<?xml version="1.0" encoding="utf-8"?>
<actions>
    <action intentName="actions.intent.CREATE_MONEY_TRANSFER">
        <fulfillment urlTemplate="mybankapp://transfer{?amount,currency,recipientBankAccountType,senderBankAccountType,mode}">
            <parameter-mapping intentParameter="moneyTransfer.amount.value" urlParameter="amount" />
            <parameter-mapping intentParameter="moneyTransfer.amount.currency" urlParameter="currency" />
            <parameter-mapping intentParameter="moneyTransfer.moneyTransferDestination.name" urlParameter="recipientBankAccountType" />
            <parameter-mapping intentParameter="moneyTransfer.moneyTransferOrigin.name" urlParameter="senderBankAccountType" />
            <parameter-mapping intentParameter="moneyTransfer.transferMode" urlParameter="mode" />
        </fulfillment>
    </action>
</actions>

Kebugaran - nutrisi

Contoh actions.xml berikut menggunakan intent bawaan actions.intent.RECORD_FOOD_OBSERVATION:

<?xml version="1.0" encoding="utf-8"?>
<actions>
    <action intentName="actions.intent.RECORD_FOOD_OBSERVATION">
        <parameter name="foodObservation.forMeal">
            <entity-set-reference entitySetId="MealEntitySet"/>
        </parameter>
        <fulfillment urlTemplate="myfoodapp://record{?food,meal}">
            <parameter-mapping intentParameter="foodObservation.forMeal" urlParameter="meal" entityMatchRequired="true" />
            <parameter-mapping intentParameter="foodObservation.aboutFood.name" urlParameter="food" />
        </fulfillment>
    </action>
    <entity-set entitySetId="MealEntitySet">
        <entity sameAs="http://schema.googleapis.com/MealTypeBreakfast" identifier="1" />
        <entity sameAs="http://schema.googleapis.com/MealTypeLunch" identifier="2" />
        <entity sameAs="http://schema.googleapis.com/MealTypeDinner" identifier="3" />

    </entity-set>
</actions>

Pemesanan makanan

Contoh actions.xml berikut menggunakan intent bawaan actions.intent.ORDER_MENU_ITEM:

<?xml version="1.0" encoding="utf-8"?>
<actions>
    <action intentName="actions.intent.ORDER_MENU_ITEM">
        <parameter name="menuItem.inMenuSection.inMenu.forRestaurant.servesCuisine">
            <entity-set-reference entitySetId="CuisineEntitySet"/>
        </parameter>
        <fulfillment urlTemplate="myfoodapp://order{?restaurant}">
            <parameter-mapping intentParameter="menuItem.inMenuSection.inMenu.forRestaurant.name" urlParameter="restaurant" required="true" />
        </fulfillment>
        <!-- URL values are derived from a matched entity from the CuisineEntity Set. This is not a fallback fulfillment because {@url} is a required parameter. -->
        <fulfillment urlTemplate="{@url}" />
        <!-- Fallback fulfillment with no required parameters -->
        <fulfillment urlTemplate="myfoodapp://browse{?food}">
            <parameter-mapping intentParameter="menuItem.name" urlParameter="food" />
        </fulfillment>
    </action>
    <entity-set entitySetId="CuisineEntitySet">
        <entity url="myfoodapp://browse/italian/pizza" name="@string/pizza" alternateName="@array/pizzaSynonyms" />
        <entity url="myfoodapp://browse/american/hamburger" name="@string/hamburger" alternateName="@array/hamburgerSynonyms" />
        <entity url="myfoodapp://browse/mediterranean" name="@string/mediterranean" alternateName="@array/mediterraneanSynonyms" />
    </entity-set>
</actions>

Transportasi

File actions.xml berikut menggunakan intent bawaan actions.intent.CREATE_TAXI_RESERVATION:

<actions>
    <action intentName="actions.intent.CREATE_TAXI_RESERVATION">
        <fulfillment urlTemplate="https://taxi-actions.firebaseapp.com/order{?dropoffAddress}">
            <!-- Dropoff location as an address -->
            <parameter-mapping
                    intentParameter="taxiReservation.dropoffLocation.name"
                    urlParameter="dropoffAddress"/>
        </fulfillment>
    </action>
</actions>

Lainnya

Contoh actions.xml berikut menggunakan intent bawaan actions.intent.OPEN_APP_FEATURE.

<?xml version="1.0" encoding="utf-8"?>
<actions>
    <action intentName="actions.intent.OPEN_APP_FEATURE">
        <!-- Each parameter can reference an entity set using a custom ID. -->
        <parameter name="feature">
            <entity-set-reference entitySetId="FeatureEntitySet"/>
        </parameter>

        <fulfillment urlTemplate="myexampleapp://pathto{?appFeature}">
            <parameter-mapping intentParameter="feature" urlParameter="appFeature" />
        </fulfillment>
    </action>

    <entity-set entitySetId="FeatureEntitySet">
        <entity identifier="FEATUREONE" name="first feature" />
        <entity identifier="FEATURETWO" name="second feature" />
    </entity-set>
</actions>