Sau khi xác định chức năng trong ứng dụng và ý định tích hợp (BII) mà bạn muốn triển khai, hãy tạo một tài nguyên actions.xml
trong ứng dụng Android để liên kết BII với chức năng của ứng dụng. Hành động trong ứng dụng được xác định trong actions.xml
mô tả cách mỗi BII giải quyết phương thức thực hiện, cũng như các tham số được trích xuất và cung cấp cho ứng dụng của bạn.
Tổng quan
Để tích hợp ứng dụng Android với Hành động trong ứng dụng, bạn phải đặt tệp actions.xml
trong thư mục res/xml
của dự án ứng dụng.
Thêm một nội dung tham chiếu đến tệp actions.xml
trong tệp AndroidManifest.xml
bằng cách sử dụng thẻ <meta-data>
. Ví dụ:
<application> <!-- ... --> <meta-data android:name="com.google.android.actions" android:resource="@xml/actions" /> </application>
Thao tác này sẽ khai báo tài nguyên XML cho tệp xml/actions.xml
trong APK. Để tìm hiểu thêm về cách chỉ định tài nguyên trong Android, vui lòng xem phần Tổng quan về tài nguyên ứng dụng trong tài liệu dành cho nhà phát triển Android.
Lược đồ
Bảng sau đây mô tả giản đồ cho actions.xml
. Khi đưa vào một thẻ, bạn phải bao gồm mọi thuộc tính của thẻ đó, trừ phi nó được đánh dấu là không bắt buộc.
Thẻ | Có trong: | Thuộc tính |
---|---|---|
<actions> |
cấp cao nhất | |
<action> |
<actions> |
|
<parameter> |
<action> |
name |
<entity-set-reference> |
<parameter> |
|
<fulfillment> |
<action> |
|
<parameter-mapping> |
<fulfillment> |
|
<entity-set> |
<actions> |
entitySetId |
<entity> |
<entity-set> |
|
Mô tả thẻ
Phần này mô tả các thẻ schema khác nhau cho actions.xml
.
<hành động>
Một Hành động trong ứng dụng mà ứng dụng hỗ trợ. Mỗi thẻ <action>
trong tệp actions.xml
phải được cung cấp ít nhất một <fulfillment>
.
Thuộc tính:
intentName
: Ý định tích hợp cho Hành động trong ứng dụng (chẳng hạn nhưactions.intent.CREATE_TAXI_RESERVATION
). Để biết danh sách các ý định tích hợp được hỗ trợ, vui lòng xem tài liệu tham khảo về ý định tích hợp.queryPatterns
: Một tập hợp các truy vấn dự kiến từ người dùng cho ý định này. Thuộc tính này chỉ áp dụng cho đối tượng có ý định tuỳ chỉnh, vì BII đã bao gồm mô hình những cách phổ biến người dùng thể hiện nhiệm vụ họ đang cố thực hiện hoặc thông tin họ tìm kiếm.
<parameter>
Một tham số của Hành động trong ứng dụng có tên và danh sách các thực thể được liên kết.
Thuộc tính:
name
: Tên để liên kết với tham số này (chẳng hạn như "đích đến"). Tên phải là một trường ở cấp độ lá của tham số (chẳng hạn nhưtradeOrder.assetOrdered.assetIssuedBy.name
). Nếu tham số là loại nguyên gốc, chẳng hạn như chuỗi, thì tên chính là tên của tham số đó.
<entity-set-reference>
Tham chiếu đến nguồn cấp dữ liệu schema.org do nhà phát triển cung cấp.
Nguồn cấp dữ liệu phải được cung cấp trực tiếp trong tệp actions.xml
bằng cách sử dụng các thẻ <entity-set>
.
Thuộc tính:
entitySetId
: Tham chiếu đến một tập hợp các thực thể cụ thể. Thuộc tính này phải tương ứng với mộtentitySetId
trong thẻ<entity-set>
.urlFilter
: Đường dẫn URL được sử dụng khi cung cấp khoảng không quảng cáo trên web để thực hiện nhiệm vụ. Thuộc tính này hỗ trợ hai ký tự đại diện:*
: Dấu hoa thị khớp một chuỗi từ 0 lần xuất hiện đến nhiều lần xuất hiện của ký tự đứng ngay trước đó..*
: Dấu chấm theo sau là dấu hoa thị khớp với mọi chuỗi từ 0 ký tự đến nhiều ký tự.Các ký tự thoát chỉ cần thiết đối với giá trị cố định
*
và\
. Bạn có thể thoát các ký tự này dưới dạng\\*
và\\\\
tương ứng.
<fulfillment>
Thông tin về cách thực hiện ý định của người dùng bằng ứng dụng Android. Nhà phát triển có thể cung cấp nhiều thẻ <fulfillment>
trong actions.xml
, với các bộ tham số bắt buộc cho từng ý định.
Google sử dụng <fulfillment>
đầu tiên có sẵn các tham số bắt buộc để đáp ứng truy vấn của người dùng. Bạn phải cung cấp một <fulfillment>
không có bất kỳ tham số bắt buộc nào dưới dạng phương thức thực hiện dự phòng.
Thuộc tính:
urlTemplate
: Mẫu để tạo liên kết sâu hoặc URI Lát cắt để mở trên thiết bị. Mẫu có thể mở rộng bằng các tham số ý định của người dùng nếu tất cả các tham số bắt buộc cho mẫu đều có sẵn. Để biết ví dụ về mẫu URL loại HTTP, vui lòng xem Bài viết trên Wikipedia về mẫu URL. Định dạng mẫu tuân theo quy cách mẫu URI RFC 6570.fulfillmentMode
: (không bắt buộc) Chế độ thực hiện dùng để phân phát. Các giá trị hợp lệ là:actions.fulfillment.DEEPLINK
: Thực hiện hành động của người dùng bằng cách mở ứng dụng Android bằng một liên kết sâu. Đây là tùy chọn mặc định.actions.fulfillment.SLICE
: Thực hiện hành động của người dùng bằng cách nhúng một Lát cắt do ứng dụng Android cung cấp.
requiredForegroundActivity
: (không bắt buộc) Cho biết hoạt động phải ở nền trước để Hành động trong ứng dụng được kích hoạt bằng lời gọi ứng dụng trên nền trước.- Chỉ định hoạt động mà không cần bất kỳ chữ viết tắt nào của lớp bằng cách dùng tên gói ứng dụng, theo sau là dấu gạch chéo lên (
/
), kế tiếp là tên của hoạt động:APP_PACKAGE_NAME/ACTIVITY_NAME
- Chỉ định hoạt động mà không cần bất kỳ chữ viết tắt nào của lớp bằng cách dùng tên gói ứng dụng, theo sau là dấu gạch chéo lên (
Sau đây là một số ví dụ về giá trị mẫu URL:
Mẫu | Giá trị | Giá trị mở rộng |
---|---|---|
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 |
Để biết thêm thông tin về cách định cấu hình mẫu URL, vui lòng xem mẫu URL để thực hiện.
< ánh xạ tham số>
Ánh xạ từ tham số ý định đến biến trong mẫu URL. Các khoá trong ánh xạ này đại diện cho tham số mẫu URL hoặc "biến" như mô tả trong RFC 6570.
Nếu tham số không được đưa vào ý định, thì biến tương ứng sẽ không xác định được tại thời điểm mở rộng mẫu URL. Vui lòng xem phần RFC 6570, Mục 3.2.1 để biết nội dung mô tả về cách xử lý các biến không xác định.
Lưu ý required="true"
và entityMatchRequired="true"
khác biệt.
Thuộc tính:
urlParameter
: Mọi biến được đề cập trong mẫu URL phải cóurlParameter
tương ứng trong<parameter-mapping>
. Chẳng hạn như nếu uri_template làhttp://spysatellite.com/show{?lat,long}
, thì bạn phải có các khóa trong<parameter-mapping>
cho tham sốlat
vàlong
.intentParameter
: Giá trị đề cập đến các tham số ý định. Nếu tham số ý định thuộc loại có cấu trúc, hãy sử dụng ký hiệu dấu chấm để tham chiếu đến trường được lồng. Chẳng hạn nếu có tham sốtaxiReservation
thuộc loạischema.org/TaxiReservation
, bạn có thể sử dụngtaxiReservation.pickupLocation.geo.latitude
để tham chiếu đến giá trị vĩ độ.Nếu cung cấp một nhóm thực thể cho tham số này,
intentParameter
phải khớp chính xác với tên của thẻ<parameter>
tương ứng (ví dụ:taxiReservation.pickupLocation.geo.latitude
).Nếu tham số ý định có loại phức tạp, thì giá trị sẽ tương ứng với tham chiếu đối tượng cho tham số đó (ví dụ:
taxiReservation
). Nếu tham số ý định có loại nguyên gốc, thì giá trị sẽ chính là tên của tham số đó.required
: (không bắt buộc) Cho biết mộtintentParameter
nhất định phải có để mẫu URL này hợp lệ. Mẫu URL bị loại bỏ nếu truy vấn của người dùng không chứa giá trị chointentParameter
đã được cung cấp.entityMatchRequired
: (không bắt buộc) Cho biết phải có khoảng không quảng cáo phù hợp vớiintentParameter
đã được cung cấp. Mặc định làfalse
.Khi thuộc tính này được đặt thành
true
, nếu có một kết quả trùng khớp với khoảng không quảng cáo thì giá trị nhận dạng từ kết quả trùng khớp đó sẽ được chuyển vào mẫu URL. Nếu không, Trợ lý sẽ bỏ qua việc thực hiện nếu không có kết quả phù hợp.Khi thuộc tính này được đặt thành
false
, nếu có một kết quả trùng khớp với khoảng không quảng cáo thì giá trị nhận dạng từ kết quả trùng khớp đó sẽ được chuyển vào mẫu URL. Nếu không, Trợ lý sẽ cung cấp giá trị tham số BII như được trích xuất từ truy vấn của người dùng.
<nhóm thực thể>
Tập hợp các thực thể cùng dòng trong actions.xml
.
Thuộc tính:
entitySetId
: Giá trị nhận dạng duy nhất bắt buộc cho<entity-set>
trongactions.xml
(chẳng hạn như"myInlineEntitySet1"
). Giá trị này cũng phải tương ứng với giá trị<entitySetId>
trong thẻ<entity-set-reference>
.Giá trị cho
entitySetId
phải chứa tối đa 30 ký tự chữ và số (không có ký tự đặc biệt như-
hoặc_
) và bắt đầu bằng một chữ cái.
<thực thể>
Một phần tử trong số một nhóm các thực thể chứa nội dung trong actions.xml
. Chứa một tập hợp con các trường schema.org/Thing
.
Bạn có thể mã hoá cứng hoặc tham chiếu giá trị chuỗi cho các trường url
, identifier
và sameAs
bằng tài nguyên chuỗi của APK. Khi cung cấp từ đồng nghĩa, hãy sử dụng các giá trị chuỗi cho trường alternateName
tham chiếu đến tài nguyên mảng chuỗi của APK.
Thuộc tính:
name
: Tên bắt buộc của thực thể, trừ khi bạn chỉ định một trườngsameAs
. Phải là duy nhất trên các trườngname
thực thể vàalternateName
của<entity-set>
đã cho (chẳng hạn như "kem đánh răng").alternateName
: (không bắt buộc) Tên thay thế của thực thể. Bạn phải chỉ định trườngname
trước khi chỉ định trườngalternateName
. Phải là duy nhất trên các trườngname
vàalternateName
của thực thể cho<entity-set>
đã cung cấp. Thực thể này sẽ được chọn nếu truy vấn của người dùng phù hợp với bất kỳ chuỗi nào trong số này.sameAs
: URL của một trang web tham khảo xác định thực thể một cách rõ ràng. Dùng để chỉ định một giá trị enum nếu và chỉ khi loại tham số ý định là loại phụ củaschema.org/Enumeration
.Đây là yêu cầu bắt buộc đối với các trường tham số có loại phụ là
schema.org/Enumeration
(chẳng hạn nhưMealTypeBreakfast
).identifier
: Giá trị nhận dạng của thực thể. Phải là duy nhất trên các thực thể của<entity-set>
đã cung cấp (chẳng hạn nhưCAPPUCCINO_ID
).url
: URL RFC 3986 sẽ mở trên thiết bị Android. Ứng dụng HTTP cũng có thể không phân giải được URL. Chẳng hạn như trên Android, URL có thể là URL "http://" liên kết với ứng dụng hoặc URL dành riêng cho thiết bị, chẳng hạn như URL "intent://" hoặc URL trong một giản đồ URL tuỳ chỉnh.Bạn có thể sử dụng trường
url
cùng với thuộc tínhurlTemplate
của<fulfillment>
theo những cách sau:Hãy cung cấp các giá trị
url
trong khoảng không quảng cáo nội tuyến và bỏ quaurlTemplate
trong<fulfillment>
.Cung cấp giá trị
url
trong khoảng không quảng cáo nội tuyến đồng thời sử dụng các giá trị đó trong giá trịurlTemplate
(chẳng hạn như{@url}?extra_param=ExampleValue
).
Bạn phải cung cấp identifier
hoặc url
. Tất cả các thực thể trong một nhóm thực thể nhất định phải sử dụng cùng một thuộc tính (identifier
hoặc url
).
Khoảng không quảng cáo nội tuyến cho Hành động trong ứng dụng
Đối với một số ý định tích hợp, bạn có thể tuỳ ý hướng dẫn việc trích xuất thực thể cho một nhóm các thực thể được hỗ trợ đã chỉ định trong actions.xml
, ở đây là khoảng không quảng cáo nội tuyến.
Khi một người dùng gọi Hành động trong ứng dụng của bạn, Trợ lý sẽ so khớp các tham số truy vấn của người dùng với các thực thể được chỉ định là khoảng không quảng cáo nội tuyến. Sau đó, Trợ lý Google có thể sử dụng giá trị nhận dạng tương ứng với các mục trong khoảng không quảng cáo khi tạo đường liên kết sâu để thực hiện đơn hàng.
Bạn sẽ xác định khoảng không quảng cáo nội tuyến chủ yếu bằng cách sử dụng phần tử <entity-set>
và <entity>
. Khoảng không quảng cáo nội tuyến đơn giản hoá việc phát triển bằng cách chỉ cho phép ứng dụng của bạn xử lý giá trị nhận dạng hoặc URL từ lời gọi Hành động trong ứng dụng thay vì cần nhận dạng chuỗi hoặc giá trị liệt kê của Google.
Chẳng hạn như ứng dụng của bạn cung cấp nhiều loại đồ uống mà người dùng có thể đặt hàng, và bạn yêu cầu người dùng đưa ra các yêu cầu sau đây cho cùng một loại đồ uống:
Ok Google, đặt một ly Blueberry Crisp Iced Signature Latte trên Ứng dụng mẫu.
Ok Google, đặt một ly Blueberry Iced Coffee trên Ứng dụng mẫu.
Trong khoảng không quảng cáo nội tuyến, bạn cần chỉ định "Ly Blueberry Crisp Iced Signature Latte" là một thực thể tương ứng với giá trị nhận dạng 12345a
. Bạn cũng cần chỉ định "Ly Blueberry Iced Coffee" là một thực thể tương ứng với cùng một giá trị nhận dạng.
Giờ đây, khi người dùng kích hoạt Hành động trong ứng dụng của bạn bằng các cụm từ tìm kiếm trước đó, Trợ lý có thể sử dụng giá trị nhận dạng 12345a
khi tạo đường liên kết sâu cho phương thức thực hiện.
Bạn có thể chỉ định tối đa 1.000 thực thể cho mỗi ứng dụng trên tất cả các nhóm thực thể. Có thể xác định tối đa 20 giá trị từ đồng nghĩa alternateName
cho mỗi <entity>
.
Khoảng không quảng cáo trên web cho Hành động trong ứng dụng
Đối với một số ý định tích hợp, bạn có thể sử dụng khoảng không quảng cáo trên web làm phương thức tạo URL để thực hiện nhiệm vụ. Khoảng không quảng cáo trên web sử dụng trang web của bạn để khám phá các URL nhằm thực hiện Hành động trong ứng dụng. Tính năng này hữu ích nhất khi nền web của bạn xuất hiện ổn định và các đường liên kết sâu trong ứng dụng được sắp xếp xoay quanh nội dung web có sẵn công khai.
Để sử dụng khoảng không quảng cáo trên web, vui lòng cập nhật actions.xml
của bạn:
Trong thẻ
<action>
mà bạn muốn sử dụng khoảng không quảng cáo trên web, hãy thêm thẻ<fulfillment>
và đặt thuộc tínhurlTemplate
của thẻ đó thành{@url}
.Trong cùng một thẻ
<action>
, hãy thêm thẻ<parameter>
và đặt thuộc tínhname
của thẻ đó thành tham số ý định tích hợp tương ứng gần nhất với thực thể mà trang web của bạn mô tả. Chẳng hạn như khi cung cấp khoảng không quảng cáo trên web choORDER_MENU_ITEM
, bạn nên liên kết các trang trình đơn vớimenuItem.name
và liên kết các trang vị trí nhà hàng vớimenuItem.inMenuSection.inMenu.forRestaurant.name
.Trong thẻ
<parameter>
mới, hãy thêm một thẻ<entity-set-reference>
và đặt thuộc tínhurlFilter
của thẻ này thành đường dẫn URL bạn muốn sử dụng cho khoảng không quảng cáo trên web.
Bằng cách thực hiện các bước trên, Trợ lý có thể tìm kiếm trên web trong đường dẫn URL mà bạn cung cấp trong thuộc tính urlFilter
. Sau đó, Trợ lý Google cung cấp giá trị {@url}
cho phương thức thực hiện của bạn bằng cách sử dụng các kết quả. Trình xử lý liên kết sâu có thể chuyển hướng người dùng dựa trên đường liên kết sâu do Trợ lý trả về để thực hiện hành động đó.
Ví dụ, giả sử trang web của bạn chứa trang thông tin sản phẩm sử dụng đường dẫn bắt đầu bằng https://www.example.com/items/
. Bạn sử dụng giá trị urlFilter
https://www.example.com/items/.*
, sau đó Trợ lý sẽ trả về URL để thực hiện hành động như https://www.example.com/items/item123
. Vui lòng xem <entity-set-reference>
để biết thông tin chí tiết về thuộc tính urlFilter
.
Mẫu URL trong phương thức thực hiện
Trong thẻ <fulfillment>
, bạn có thể khai báo một mẫu URL bằng phần giữ chỗ cho tham số động. Mẫu này sẽ liên kết đến một trong các hoạt động Android của bạn bằng cách sử dụng URL đường liên kết ứng dụng, giản đồ tuỳ chỉnh hoặc URL dựa trên ý định.
Định cấu hình mẫu URL
Ví dụ về URL liên kết ứng dụng:
<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>
Ví dụ về lược đồ tùy chỉnh:
<action intentName="actions.intent.CREATE_TAXI_RESERVATION"> <fulfillment urlTemplate="mytaxi://reserve{?dropoffLocation}"> <parameter-mapping intentParameter="taxiReservation.dropoffLocation.name" urlParameter="dropoffLocation"/> </fulfillment> </action>
Ví dụ về URL dựa trên ý định:
<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>
Khi chỉ định thẻ <parameter-mapping>
cho phương thức thực hiện, thuộc tính intentParameter
biểu thị tham số ý định tích hợp do người dùng cung cấp. Ở các ví dụ trên, tham số đó là tên vị trí trả khách (taxiReservation.dropoffLocation.name
). Bạn có thể tìm thấy các tham số có sẵn cho mọi ý định tích hợp đã cho trong phần tham chiếu ý định tích hợp.
Để liên kết tham số có ý định tích hợp với một vị trí trong URL, bạn phải sử dụng thuộc tính urlParameter
của thẻ <parameter-mapping>
. Thuộc tính này tương ứng với giá trị phần giữ chỗ trong mẫu URL mà bạn muốn thay thế bằng thông tin của người dùng. Giá trị phần giữ chỗ phải có trong urlTemplate
và được đặt trong dấu ngoặc nhọn ({}
).
URL liên kết ứng dụng
Nếu bạn đang sử dụng URL liên kết ứng dụng, urlTemplate
sẽ trỏ đến URL HTTP thông thường có thể kích hoạt Activity
của bạn. Các tham số được truyền dưới dạng tham số URL vào URL của liên kết ứng dụng. Các tham số trong urlTemplate
phải được đặt trong dấu ngoặc nhọn ({}
) và đặt trước dấu chấm hỏi (?
). Nếu bạn không đặt tham số, thì tham số đó (bao gồm dấu ngoặc nhọn) sẽ bị loại khỏi kết quả.
Chẳng hạn như nếu một người dùng kích hoạt Hành động trong ứng dụng bằng cách yêu cầu đặt một chuyến taxi đến San Francisco, thì URI cuối cùng được kích hoạt (sau khi thay thế tham số) sẽ như sau:
https://mydomain.com/order?action=com.example.myapp.MY_ACTION&dropoff=San+Francisco
URL dựa trên ý định
Nếu bạn đang sử dụng URL dựa trên ý định, thì giá trị urlTemplate
sẽ bao gồm tên gói, thao tác theo ý định và một số ý định bổ sung, được gọi là dropoff.
Phần phụ có tiền tố là "S." để biểu thị một ý định phụ String
(như được Intent.toUri()
xác định) và được bao quanh bằng dấu ngoặc nhọn để biểu thị sự thay thế bằng một tham số.
Bạn cần thêm dấu chấm phẩy phía trước để phân tách thao tác theo ý định đó với ý định phụ (và chỉ đưa vào nếu tham số này được đặt).
Trong ví dụ sau, giá trị urlParameter
được đặt thành S.dropoff
; bạn có thể thấy vị trí giá trị này xuất hiện trong URL bằng cách tìm giá trị này trong urlTemplate
.
Chẳng hạn như nếu người dùng kích hoạt một Hành động trong ứng dụng bằng cách yêu cầu gọi xe đến San Francisco, thì URI cuối cùng được kích hoạt (sau khi thay thế tham số) sẽ là:
intent:#Intent;package=com.example.myapp;action=com.example.myapp.MY_ACTION;S.dropoff=San+Francisco;end
Để biết thêm thông tin về ý định, vui lòng xem tài liệu về Ý định trên Android.
Sử dụng giá trị URL từ các thực thể trong mẫu URL
Theo mặc định, nếu một <entity>
khớp với truy vấn của người dùng, thì giá trị của thuộc tính identifier
sẽ được truyền vào mẫu URL. Để tham chiếu thuộc tính url
của <entity>
, vui lòng sử dụng {@url}
trong mẫu URL và không sử dụng thẻ <parameter-mapping>
. Lưu ý giá trị nhận dạng là các ký tự thoát URL, nhưng các giá trị của thuộc tính url
vẫn không thay đổi.
Nếu một phương thức thực hiện đơn hàng sử dụng {@url}
trong mẫu URL, thì phương thức thực hiện đơn hàng sẽ cố gắng lấy {@url}
từ các nguồn như khoảng không quảng cáo trên web và nội tuyến. Khi khoảng không quảng cáo trên web lẫn nội tuyến đều là các nguồn tiềm năng từ {@url}
, thì khoảng không quảng cáo trên web sẽ được ưu tiên.
Điều này được thể hiện trong ví dụ sau:
<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>
Tham số {@url}
có thể được kết hợp với các tham số khác:
<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>
So khớp tham số
Cách Google so khớp tham số từ cách phát âm của người dùng với các thực thể bạn đã chỉ định sẽ phụ thuộc vào loại tham số:
- Enum: Google so khớp truy vấn của người dùng ("Monday") với một URL enum liên kết ("http://schema.org/Monday"), sau đó chọn thực thể có giá trị
sameAs
khớp với URL enum. - Chuỗi: Google chọn thực thể có giá trị
name
hoặcalternateName
khớp với truy vấn của người dùng.
Ví dụ
Phần này cho thấy ví dụ về cách sử dụng các ý định tích hợp trong actions.xml
.
Tài chính – tài khoản và việc thanh toán
Ví dụ actions.xml
dưới đây sử dụng ý định tích hợp 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>
Thể dục - dinh dưỡng
Ví dụ actions.xml
dưới đây sử dụng ý định tích hợp 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>
Đặt món ăn
Ví dụ actions.xml
dưới đây sử dụng ý định tích hợp 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>
Giao thông
Tệp actions.xml
sau đây sử dụng ý định tích hợp 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>
Khác
Ví dụ actions.xml
dưới đây sử dụng ý định tích hợp 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>