Thông qua Hành động trong ứng dụng, người dùng có thể truy cập trực tiếp vào nội dung của ứng dụng bằng cách nói các câu như "Ok Google, cho tôi xem thực đơn của Three Dot Cafe trên ExampleApp". Chức năng này được gọi là đường liên kết sâu và giúp người dùng hoàn thành mọi việc dễ dàng hơn với ứng dụng của bạn.
Để thực hiện loại yêu cầu này, Trợ lý Google tạo một đường liên kết sâu đến nội dung phù hợp trong ứng dụng của bạn. Nếu bạn chủ động duy trì trang web của mình với nội dung hoặc thông tin sản phẩm, và đường liên kết sâu trong ứng dụng được sắp xếp xung quanh nội dung web công khai này, thì bạn có thể định cấu hình Trợ lý để tìm nạp URL cho thao tác thực hiện hành động trên trang web của bạn bằng cách sử dụng khoảng không trên web.
Khoảng không quảng cáo trên web là vị trí trên trang web chứa URL của mặt hàng mà ứng dụng hỗ trợ. Khi một người dùng gọi Hành động trong ứng dụng, Trợ lý sẽ so khớp cụm từ tìm kiếm của người dùng, chẳng hạn như “Three Dot Cafe”, với các URL tương ứng trong chỉ mục tìm kiếm của Google ở trang web mà bạn chỉ định trong shortcuts.xml
cho ứng dụng Android.
Lợi ích
Khoảng không quảng cáo trên web mang lại lợi thế cho các ứng dụng có danh sách lớn, cập nhật thường xuyên các mặt hàng mà người dùng xem hoặc đặt hàng trong ứng dụng:
Dữ liệu cho khoảng không quảng cáo trên web nằm trên trang web của bạn, không giống như dữ liệu khoảng không quảng cáo nội tuyến lưu trữ danh sách mặt hàng trong ứng dụng. Việc cho phép Trợ lý truy cập vào dữ liệu web sẽ tránh được rủi ro dữ liệu khoảng không quảng cáo nội tuyến bị lỗi thời khi chỉ có thể cập nhật dữ liệu này bằng cách phát hành phiên bản mới của ứng dụng.
Khoảng không quảng cáo nội tuyến chỉ được phép có tối đa 1.000 mặt hàng. Ngược lại, khoảng không quảng cáo trên web không có giới hạn về mặt hàng và có thể phát triển theo nhu cầu của bạn.
Khoảng không quảng cáo trên web có thể đơn giản hoá logic ứng dụng bằng cách cho phép thực hiện đơn hàng chỉ xử lý những URL có nội dung có thể dự đoán được truy xuất từ trang web của bạn. Ngược lại, nếu bạn không định cấu hình khoảng không quảng cáo, Trợ lý sẽ tạo các đường liên kết sâu cho phương thức thực hiện bằng cách liên kết các tham số ý định với các biến trong mẫu URL. Sau đó, phương thức thực hiện của bạn sẽ cần phân tích URL được tạo động này để xác định xem người dùng có yêu cầu một thực thể được hỗ trợ trong ứng dụng của bạn hay không.
Cách hoạt động
Trong quá trình Hành động trong ứng dụng, Trợ lý sẽ thực hiện liên kết sâu đến nội dung ứng dụng thông qua ý định tích hợp (BII) mà bạn xác định trong shortcuts.xml
. Trợ lý sử dụng cách xử lý ngôn ngữ tự nhiên để xác định các mặt hàng có liên quan trong yêu cầu của người dùng, rồi trích xuất các yêu cầu đó thành tham số BII. Sau đó, Trợ lý sử dụng các tham số để tạo một đường liên kết sâu, dựa trên cấu hình phương thức thực hiện của bạn trong shortcuts.xml.
Có 3 phương pháp để tạo đường liên kết sâu cho quá trình thực hiện:
- Ánh xạ tham số: Ánh xạ các tham số ý định đến trình giữ chỗ trong mẫu URL của thao tác thực hiện.
- Khoảng không quảng cáo nội tuyến: So khớp các tham số ý định với danh sách
entities
được hỗ trợ đã xác định trong ứng dụng. - Khoảng không quảng cáo trên web: So khớp các tham số ý định với nội dung tìm thấy trong Chỉ mục tìm kiếm của Google trên trang web.
Khoảng không quảng cáo trên web là mẫu URL của trang web do nhà phát triển xác định, chẳng hạn như https://www.exampleapp.com/restaurants/.*
đại diện cho tập hợp các thực thể do một ứng dụng hỗ trợ.
Nếu tham số BII được định cấu hình cho một khoảng không quảng cáo trên web, Trợ lý sẽ tìm kiếm trang web đó để thực hiện việc so khớp thực thể với truy vấn của người dùng. Sau đó, Trợ lý sẽ truyền các kết quả URL khớp với mẫu URL đã định cấu hình, chẳng hạn như https://www.exampleapp.com/restaurants/three-dot-cafe
cho phương thức thực hiện của bạn.
![](https://developer.android.com/static/guide/app-actions/images/web-inventory-flow.png?authuser=6&hl=vi)
Các ý định tích hợp sẵn được hỗ trợ
Đối với một vài tham số ý định nhất định, khoảng không quảng cáo trên web được hỗ trợ dựa trên các BII sau:
- [
actions.intent.CREATE_REVIEW
] - [
actions.intent.GET_NEWS_ARTICLE
] - [
actions.intent.GET_REVIEW
] - [
actions.intent.GET_THING
] - [
actions.intent.ORDER_MENU_ITEM
] - [
actions.intent.GET_EXERCISE_PLAN
] - [
actions.intent.GET_DIGITAL_DOCUMENT
] - [
actions.intent.GET_ITEM_LIST
] - [
actions.intent.GET_OFFER
] - [
actions.intent.CREATE_OFFER
] - [
actions.intent.GET_PRODUCT
] - [
actions.intent.UPDATE_CART
] - [
actions.intent.CREATE_SOCIAL_MEDIA_CONNECTION
] - [
actions.intent.GET_IMAGE_OBJECT
] - [
actions.intent.GET_SOCIAL_MEDIA_POSTING
] - [
actions.intent.GET_SOCIAL_MEDIA_PROFILE
] - [
actions.intent.CREATE_TAXI_RESERVATION
] - [
actions.intent.CREATE_FLIGHT_RESERVATION
] - [
actions.intent.CREATE_LODGING_RESERVATION
] - [
actions.intent.GET_LOCAL_BUSINESS
] - [
actions.intent.GET_RESERVATION
] - [
actions.intent.UPDATE_RESERVATION
]
Thêm khoảng không quảng cáo trên web
Sau khi xác định BII được hỗ trợ, bạn sẽ bật tính năng này cho khoảng không quảng cáo trên web bằng cách cập nhật shortcuts.xml
với thông tin chi tiết về trang web của bạn. Tệp shortcuts.xml
là một tài nguyên trong dự án Android, nơi bạn xác định các BII liên kết với chức năng của ứng dụng và cách mỗi BII tạo các đường liên kết sâu để ứng dụng của bạn thực hiện hành động. Để tìm hiểu thêm về shortcuts.xml
, vui lòng xem phần Tạo shortcuts.xml.
Để sử dụng khoảng không quảng cáo trên web cho một BII được hỗ trợ, hãy làm theo các bước sau:
Trong tệp
shortcuts.xml
cho ứng dụng của bạn, hãy thêm thẻ<capability>
có thuộc tínhandroid:name
được đặt thành tên của BII mà bạn đang xử lý với khoảng không quảng cáo trên web, chẳng hạn nhưactions.intent.ORDER_MENU_ITEM
.Trong thẻ
<capability>
, hãy thêm thẻ<intent>
có thuộc tínhandroid:action
được đặt thành tên của khung hiển thị được kích hoạt theo ý định này.Trong cùng một thẻ
<intent>
, hãy thêm thẻ<parameter>
và đặt thuộc tínhandroid:name
của nó thành tham số BII tương ứng nhất với thực thể mà trang web của bạn mô tả. Ví dụ: khi cung cấp khoảng không quảng cáo trên web choORDER_MENU_ITEM
, bạn phải liên kết các trang trình đơn vớimenuItem.name
.Trong thẻ
<parameter>
mới, hãy thêm thẻ<data>
và đặt thuộc tínhandroid:pathPattern
của thẻ đó vào mẫu URL của đường dẫn mà bạn muốn sử dụng cho khoảng không quảng cáo trên web.
Khi bạn định cấu hình shortcuts.xml
qua các bước sau, Trợ lý có thể truy xuất nội dung trên web từ chỉ mục tìm kiếm của Google trong mẫu URL mà bạn đã cung cấp cho thuộc tính android:pathPattern
. Sau đó, Trợ lý 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 kết quả khớp với mẫu đường dẫn URL mà bạn đã xác định. Tiếp đến, ứng dụng của bạn sẽ đưa người dùng đến một vị trí cụ thể trong ứng dụng dựa trên dữ liệu URL do Trợ lý cung cấp.
Ví dụ: trang web của bạn chứa danh mục các sản phẩm sử dụng đường dẫn URL bắt đầu với https://www.examplecafe.com/items/
. Bạn sử dụng giá trị pathPattern
https://www.examplecafe.com/items/.*
và Trợ lý sẽ dùng mẫu URL này trong một lượt tìm kiếm trên web để tìm URL của phương thức thực hiện, chẳng hạn như https://www.examplecafe.com/items/item123
.
Nếu tìm thấy URL của khoảng không quảng cáo phù hợp trên web, Trợ lý sẽ cung cấp URL trong trường <data>
của ý định thực hiện dưới dạng một đường liên kết sâu. Sử dụng phương thức getData()
của ý định để lấy URL dưới dạng đối tượng Uri
. Hoạt động trong ứng dụng khi nhận được ý định sẽ chịu trách nhiệm diễn giải URL và kích hoạt giao diện người dùng của ứng dụng thích hợp.
Ví dụ về shortcuts.xml
Mẫu sau đây xác định BII ORDER_MENU_ITEM
cung cấp khoảng không quảng cáo trên web để trả về kết quả URL cho các yêu cầu chứa tham số BII menuItem.name
:
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<!-- Define URL match pattern in the pathPattern data field -->
<parameter android:name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*"/>
</parameter>
</intent>
</capability>
</shortcuts>
Ở mẫu trên, pathPattern
được chỉ định cho menuItem.name
để hướng dẫn Trợ lý chỉ trả về các URL tuân theo mẫu URL: https://www.examplecafe.com/items/.*
Bạn có thể xem thêm ví dụ về shortcuts.xml
của BII hỗ trợ khoảng không quảng cáo trên web trong tài liệu tham khảo.
Xử lý dự phòng đối với các kết quả bị thiếu
Trong trường hợp kết quả khoảng không quảng cáo trên web không được trả lại cho quá trình thực hiện, ứng dụng của bạn phải triển khai logic dự phòng để thực hiện hành động với trải nghiệm người dùng tốt nhất có thể. Các tình huống dẫn đến kết quả bị thiếu bao gồm:
- Thiếu tham số ý định: Người dùng đã bỏ qua một tham số dự kiến trong truy vấn của họ hoặc Trợ lý không hiểu tham số đó trong yêu cầu của người dùng.
- Thiếu kết quả URL: Trợ lý không thể tìm thấy một thực thể trên trang web của bạn khớp với cụm từ tìm kiếm của người dùng.
Bạn có thể xử lý các giá trị tham số thiếu bằng cách xác định nhiều phần tử <intent>
cho một khả năng. Nếu không thể thực hiện được ý định đầu tiên, Trợ lý sẽ quay về ý định tiếp theo và cứ tiếp tục như vậy.
Ý định dự phòng không được yêu cầu các tham số. Thay vào đó, chúng thực hiện khả năng này bằng một đường liên kết sâu tổng quát hơn, chẳng hạn như hiển thị kết quả tìm kiếm cho cụm từ tìm kiếm của người dùng.
Trong mẫu shortcuts.xml
sau đây, BII ORDER_MENU_ITEM
xác định hai phương thức thực hiện: Phương thức đầu tiên yêu cầu một URL từ tham số menuItem.name
. Phương thức thứ hai không yêu cầu tham số, định tuyến người dùng đến một trang hiển thị tất cả các mục trong trình đơn.
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<parameter android:name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*"/>
</parameter>
</intent>
<!-- Fallback intent with no required parameters -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.ViewMenuActivity">
<url-template android:value="myapp://app.examplecafe.com/menu/all-items" />
</intent>
</capability>
Trong trường hợp URL khoảng không quảng cáo trên web không được trả lại, nội dung cụm từ tìm kiếm của người dùng vẫn có thể được sử dụng trong các ý định dự phòng, chẳng hạn như để hiển thị các kết quả tìm kiếm.
Trong shortcuts.xml
mẫu sau đây, có hai phần tử ý định được xác định:
- Ý định thứ nhất yêu cầu liên kết sâu khoảng không quảng cáo trên web từ tham số
menuItem.name
. - Nếu không trả về một đường liên kết sâu, ý định thứ hai sẽ hiển thị kết quả tìm kiếm bằng cách sử dụng cụm từ tìm kiếm của người dùng từ
menuItem.name
nếu có.
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<parameter android:name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*" />
</parameter>
</intent>
<!-- Fallback intent displaying search results, using "menuItem.name" -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.SearchMenuActivity">
<parameter-mapping android:name="menuItem.name" android:key="food" />
<url-template android:value="https://www.examplecafe.com/search?q={?food}" />
</intent>
</capability>
Thêm tính năng tìm kiếm trong ứng dụng bằng khoảng không quảng cáo trên web
Cho phép người dùng tìm kiếm nội dung web trên ứng dụng của bạn bằng cách kết hợp khoảng không quảng cáo web với việc triển khai BII actions.intent.GET\_THING
.
BII này tìm kiếm nội dung hoặc thực thể bằng cách sử dụng tính năng tìm kiếm nội bộ mặc định trong ứng dụng, cho phép thực hiện các truy vấn như: "Ok Google, hãy cho tôi xem các tuyến đi bộ đường dài trên thác nước trong SampleApp". Bằng cách định cấu hình khoảng không quảng cáo trên web cho tham số chức năng thing.name
do BII GET_THING
chuyển vào, các kết quả thực thể phù hợp từ trang web sẽ được truyền để thực hiện hành động.
Vui lòng xem tài liệu tham khảo BII GET\_THING
để biết các mẫu shortcuts.xml
của khoảng không quảng cáo trên web.
Kiểm thử khoảng không quảng cáo trên web
Khi bạn xác định khoảng không quảng cáo trên web cho một phương thức thực hiện BII, Trợ lý sẽ tạo đường liên kết sâu bằng cách sử dụng kết quả web phù hợp với mẫu urlTemplate
mà bạn xác định cho tham số BII đã chỉ định. Nếu không tìm thấy kết quả về khoảng không quảng cáo trên web, Trợ lý sẽ tạo một URL phù hợp với mẫu urlTemplate
trong ý định dự phòng của bạn. Bạn có thể kiểm tra cách triển khai khoảng không quảng cáo trên web của mình bằng cách xác minh rằng các đường liên kết mà Trợ lý cung cấp là các URL khớp với mẫu urlTemplate
của khoảng không quảng cáo trên web của bạn.
Trong mẫu BII ORDER_MENU_ITEM
sau đây, Trợ lý sẽ tạo các đường liên kết thực hiện khoảng không quảng cáo trên web khớp với mẫu urlFilter
được chỉ định trong tham số menuItem.name
, chẳng hạn như https://www.examplecafe.com/items/nuggets
. Ý định thứ hai nhận giá trị menuItem.name
và tìm kiếm nếu ý định đầu tiên không khớp với mẫu URL.
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<!-- web inventory fulfillment -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<parameter name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*" />
</parameter>
</intent>
<!-- search intent -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.MenuSearchActivity">
<parameter-mapping android:name="menuItem.name" android:key="food" />
<url-template android:value="https://www.examplecafe.com/search?q={?food}" />
</intent>
</capability>
Sử dụng Công cụ kiểm tra hành động trong ứng dụng để kiểm thử khoảng không quảng cáo trên web trong một thiết bị thực hoặc ảo.
Để sử dụng công cụ kiểm tra này, hãy làm theo các bước sau:
- Kết nối thiết bị thử nghiệm với ứng dụng đang chạy.
- Trong Android Studio, vui lòng chọn Công cụ > Hành động trong ứng dụng > Công cụ kiểm tra hành động trong ứng dụng.
- Nhấp vào Tạo bản xem trước.
- Trong Android Studio, hãy chạy ứng dụng của bạn trên thiết bị thử nghiệm.
- Dùng ứng dụng Trợ lý trên thiết bị kiểm thử để kiểm thử Hành động trong ứng dụng. Ví dụ: bạn có thể nói những câu như "Ok Google, đặt gà chiên giòn trên ExampleCafe".
- Quan sát hành vi của ứng dụng hoặc sử dụng Trình gỡ lỗi Android Studio để xác minh kết quả của hành động mong muốn.