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 untuk 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 sebagai opsional.
Tag | Ada dalam | Atribut |
---|---|---|
<actions> |
tingkat teratas | |
<action> |
<actions> |
|
<parameter> |
<action> |
name |
<entity-set-reference> |
<parameter> |
|
<fulfillment> |
<action> |
|
<parameter-mapping> |
<fulfillment> |
|
<entity-set> |
<actions> |
entitySetId |
<entity> |
<entity-set> |
|
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 entity terkait.
Atribut:
name
: Nama yang akan dikaitkan dengan parameter ini (misalnya, "destination"). Nama berupa kolom tingkat daun 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 entity tertentu. Atribut ini harus sesuai denganentitySetId
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
.
- Tentukan aktivitas tanpa singkatan class menggunakan nama paket aplikasi
Anda,
diikuti dengan garis miring (
Berikut adalah beberapa contoh nilai template URL:
Template | Nilai | Nilai yang diperluas |
---|---|---|
https://example.com/test{?someValue,anotherValue} |
"someValue": "123"
|
https://example.com/test?someValue=123&anotherValue=456 |
https://example.com/test?utm_campaign=appactions{&someValue,anotherValue} |
"someValue": "123"
|
https://example.com/test?utm_campaign=appactions&someValue=123&anotherValue=456 |
https://example.com/test?utm_campaign=appactions{#someValue} |
"someValue": "123" |
https://example.com/test?utm_campaign=appactions#someValue=123 |
myapp://example/{someValue} |
"someValue": "123" |
myapp://example/123 |
intent://example#Intent;scheme=my-scheme{;S.extra1,S.extra2};end |
"S.extra1": "123"
|
intent://example#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 memilikiurlParameter
yang sesuai di<parameter-mapping>
. Misalnya, jika uri_template adalahhttp://spysatellite.com/show{?lat,long}
, harus ada kunci di<parameter-mapping>
untuk parameterlat
danlong
.intentParameter
: Nilai merujuk pada parameter intent. Jika parameter intent berupa jenis terstruktur, gunakan notasi titik untuk merujuk pada kolom bertingkat. Misalnya, jika ada parametertaxiReservation
dari jenisschema.org/TaxiReservation
, Anda dapat menggunakantaxiReservation.pickupLocation.geo.latitude
untuk merujuk ke nilai lintang.Jika memberikan kumpulan entity 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 sesuai dengan referensi objek untuk parameter (misalnya,
taxiReservation
). Jika parameter intent memiliki jenis primitif, nilainya berupa nama parameter itu sendiri.required
: (opsional) Menunjukkan bahwaintentParameter
tertentu harus ada agar template URL ini valid. Template URL akan dihapus jika kueri pengguna tidak menyertakan nilai untukintentParameter
yang ditentukan.entityMatchRequired
: (opsional) Menunjukkan bahwa inventaris yang cocok untukintentParameter
yang ditentukan harus ada. Default-nya adalahfalse
.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 entity inline di actions.xml
.
Atribut:
entitySetId
: ID unik yang diperlukan untuk<entity-set>
diactions.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 entity yang disisipkan di actions.xml
. Berisi subkumpulan
kolom schema.org/Thing
.
Nilai string untuk kolom url
, identifier
, dan sameAs
dapat di-hardcode atau
direferensikan menggunakan resource string APK. Saat memberikan
sinonim, gunakan nilai string untuk kolom alternateName
yang mereferensikan
resource array string APK.
Atribut:
name
: Nama wajib untuk entity, kecuali jika Anda menentukan kolomsameAs
. Harus unik di seluruh kolomname
danalternateName
entity untuk<entity-set>
yang ditentukan (misalnya, "pasta gigi").alternateName
: (opsional) Nama alternatif untuk entity. Anda harus menentukan kolomname
sebelum menentukan kolomalternateName
. Harus unik di seluruh kolomname
danalternateName
entity untuk<entity-set>
yang ditentukan. Entity dipilih jika kueri pengguna cocok dengan salah satu string ini.sameAs
: URL halaman web referensi yang secara jelas mengidentifikasi entity. Digunakan untuk menentukan nilai enum jika dan hanya jika jenis parameter intent adalah subjenisschema.org/Enumeration
.Wajib untuk kolom parameter yang jenisnya adalah subjenis
schema.org/Enumeration
(misalnya:MealTypeBreakfast
).identifier
: ID untuk entity. Harus unik di seluruh entity untuk<entity-set>
yang ditentukan (misalnya,CAPPUCCINO_ID
).url
: URL RFC 3986 untuk dibuka di perangkat Android. URL mungkin 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 atributurlTemplate
dari<fulfillment>
dengan cara berikut:Berikan nilai
url
dalam inventaris inline, dan hapusurlTemplate
dalam<fulfillment>
.Berikan nilai
url
dalam inventaris inline, dan gunakan nilai tersebut dalam nilaiurlTemplate
(misalnya,{@url}?extra_param=ExampleValue
).
identifier
atau url
harus diberikan. Semua entity dalam kumpulan entity
tertentu harus menggunakan atribut yang sama (identifier
atau url
).
Inventaris inline untuk Action Aplikasi
Untuk beberapa intent bawaan, Anda dapat memandu ekstraksi entity secara opsional ke rangkaian
entity didukung yang ditentukan dalam actions.xml
, yang dikenal sebagai inventaris inline.
Saat pengguna memanggil Action Aplikasi Anda, Asisten mencocokkan parameter kueri pengguna
dengan entity 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,
bukan 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 entity yang sesuai dengan 12345a
ID. Anda juga menentukan
"Blueberry Iced Coffee" sebagai entity yang sesuai dengan ID yang sama.
Sekarang, saat pengguna memicu Action Aplikasi Anda dengan kueri sebelumnya, Asisten
dapat menggunakan ID 12345a
saat membuat deep link untuk fulfillment.
Anda dapat menentukan hingga 1.000 entity per aplikasi di semua kumpulan entity. 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
:
Pada tag
<action>
tempat Anda ingin menggunakan inventaris web, tambahkan tag<fulfillment>
dan tetapkan atributurlTemplate
-nya ke{@url}
.Dalam tag
<action>
yang sama, tambahkan tag<parameter>
dan tetapkan atributname
-nya ke parameter intent bawaan yang paling terkait dengan entity yang dijelaskan oleh halaman web Anda. Misalnya, saat menyediakan inventaris web untukORDER_MENU_ITEM
, Anda menautkan halaman menu kemenuItem.name
dan menautkan halaman lokasi restoran kemenuItem.inMenuSection.inMenu.forRestaurant.name
.Pada tag
<parameter>
baru, tambahkan tag<entity-set-reference>
dan tetapkan atributurlFilter
-nya ke jalur URL yang ingin Anda gunakan untuk inventaris web.
Dengan melakukan langkah-langkah sebelumnya, 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 sebelumnya, 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 Aplikasi, urlTemplate
akan mengarah ke URL HTTP reguler
yang dapat memicu Activity
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 Senayan, 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 berikut, nilai urlParameter
ditetapkan ke S.dropoff
; Anda dapat melihat
tempatnya ditampilkan di URL dengan mencari nilai ini di urlTemplate
.
Misalnya, jika pengguna memicu Action Aplikasi dengan meminta pesanan kendaraan ke Senayan, URI akhir yang dipicu (setelah penggantian parameter) adalah:
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 entity 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.
Hal ini ditunjukkan dalam contoh berikut:
<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:
<fulfillment urlTemplate="{@url}?referrer=actions_on_google{&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 entity yang Anda tentukan bergantung pada jenis parameternya:
- Enum: Google mencocokkan kueri pengguna ("Monday") dengan URL enum terkait ("http://schema.org/Monday"), lalu memilih entity yang nilai
sameAs
-nya cocok dengan URL enum. - String: Google memilih entity yang nilai
name
ataualternateName
-nya cocok dengan kueri pengguna.
Contoh
Bagian 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>