1. Trước khi bắt đầu
Các công cụ tích hợp nhà thông minh cho phép Trợ lý Google kiểm soát các thiết bị thông minh trên trang web của người dùng nhà. Để tạo một Hành động trong nhà thông minh, bạn cần cung cấp một điểm cuối webhook trên đám mây có khả năng xử lý ý định nhà thông minh. Ví dụ: khi người dùng nói "Ok Google, bật đèn lên" Trợ lý gửi lệnh đến phương thức thực hiện của bạn trên đám mây để cập nhật trạng thái của thiết bị.
Local Home SDK giúp tăng cường khả năng tích hợp nhà thông minh bằng cách thêm đường dẫn cục bộ để định tuyến ý định nhà thông minh trực tiếp đến một thiết bị Google Home. Việc này giúp nâng cao độ tin cậy và giảm độ trễ khi xử lý dữ liệu của người dùng các lệnh. Công cụ này cho phép bạn viết và triển khai một ứng dụng thực hiện cục bộ trong TypeScript hoặc JavaScript giúp xác định các thiết bị và thực thi các lệnh trên mọi loa thông minh Google Home hoặc màn hình thông minh Google Nest. Sau đó, ứng dụng của bạn sẽ giao tiếp trực tiếp với người dùng các thiết bị thông minh hiện có qua mạng cục bộ bằng cách sử dụng các giao thức chuẩn hiện có để thực hiện các lệnh.
Gỡ lỗi cho Hành động trong nhà thông minh là một bước quan trọng để xây dựng Hành động có chất lượng thực tế. Tuy nhiên, việc này cũng khó và tốn thời gian nếu không có các công cụ kiểm tra và khắc phục sự cố dễ sử dụng và chứa nhiều thông tin. Để tạo điều kiện gỡ lỗi cho các Actions nhà thông minh, chúng tôi cung cấp các Chỉ số, Ghi nhật ký và Bộ thử nghiệm dành cho nhà thông minh trên Google Cloud Platform (GCP) để giúp bạn xác định cũng như giải quyết các vấn đề mà Hành động của mình gặp phải.
Điều kiện tiên quyết
- Hướng dẫn dành cho nhà phát triển Tạo một hành động trong nhà thông minh
- Chạy lớp học lập trình Bật phương thức thực hiện cục bộ cho các Hành động trên nhà thông minh
Sản phẩm bạn sẽ tạo ra
Trong lớp học lập trình này, bạn sẽ xây dựng một phương thức thực hiện cục bộ cho các Hành động trong nhà thông minh và kết nối ứng dụng đó với Trợ lý, sau đó gỡ lỗi ứng dụng Local Home thông qua Bộ thử nghiệm dành cho nhà thông minh và Ghi nhật ký và chỉ số của Google Cloud Platform (GCP).
Kiến thức bạn sẽ học được
- Cách sử dụng các chỉ số và nhật ký của GCP để xác định và giải quyết các vấn đề liên quan đến bản phát hành công khai.
- Cách sử dụng Bộ kiểm thử để xác định các vấn đề về chức năng và API.
- Cách sử dụng Công cụ dành cho nhà phát triển Chrome khi phát triển ứng dụng Local Home.
Bạn cần có
- Phiên bản mới nhất của Google Chrome
- Thiết bị iOS hoặc Android có ứng dụng Google Home
- Loa thông minh Google Home hoặc màn hình thông minh Google Nest
- Node.js phiên bản 10.16 trở lên
- Tài khoản Google
- Một tài khoản thanh toán Google Cloud
2. Chạy ứng dụng máy giặt
Lấy mã nguồn
Nhấp vào đường liên kết sau đây để tải mẫu xuống cho lớp học lập trình này trên máy phát triển của bạn:
...hoặc bạn có thể sao chép kho lưu trữ GitHub từ dòng lệnh:
$ git clone https://github.com/google-home/smarthome-debug-local.git
Giới thiệu về dự án
Ứng dụng khởi đầu chứa các thư mục con và chức năng đám mây tương tự như lớp học lập trình Bật phương thức thực hiện cục bộ cho các Thao tác trên nhà thông minh. Nhưng thay vì app-start
, chúng ta sẽ có app-faulty
ở đây. Chúng ta sẽ bắt đầu bằng một ứng dụng cục bộ trên màn hình chính nhưng hoạt động chưa tốt.
Kết nối với Firebase
Chúng ta sẽ sử dụng chính dự án mà bạn đã tạo trong lớp học lập trình Bật phương thức thực hiện cục bộ cho các Hành động trên nhà thông minh. Tuy nhiên, chúng ta sẽ triển khai các tệp đã tải xuống trong lớp học lập trình này.
Chuyển đến thư mục app-faulty
, sau đó thiết lập Giao diện dòng lệnh (CLI) Firebase bằng dự án Hành động đã tạo trong lớp học lập trình Bật phương thức thực hiện cục bộ cho các Hành động trên nhà thông minh:
$ cd app-faulty $ firebase use <project-id>
Triển khai cho Firebase
Chuyển đến thư mục app-faulty/functions
và cài đặt mọi phần phụ thuộc cần thiết bằng npm
:
$ cd functions $ npm install
Lưu ý:Nếu thấy thông báo dưới đây, bạn có thể bỏ qua và tiếp tục. Cảnh báo này xuất phát từ một số phần phụ thuộc cũ. Bạn có thể xem thêm thông tin chi tiết tại đây.
found 5 high severity vulnerabilities run `npm audit fix` to fix them, or `npm audit` for details
Chuyển đến thư mục app-faulty/local/
và chạy các lệnh sau để tải trình biên dịch TypeScript xuống và biên dịch ứng dụng:
$ cd ../local $ npm install $ npm run build
Thao tác này sẽ biên dịch nguồn index.ts
(TypeScript) và đặt các nội dung sau vào thư mục app-faulty/public/local-home/
:
bundle.js
– Đầu ra JavaScript được biên dịch chứa ứng dụng cục bộ và các phần phụ thuộc.index.html
– Trang lưu trữ cục bộ dùng để phân phát ứng dụng cho mục đích thử nghiệm trên thiết bị.
Sau khi cài đặt các phần phụ thuộc và định cấu hình dự án, bạn đã sẵn sàng chạy ứng dụng lần đầu tiên.
$ firebase deploy
Đây là kết quả trên bảng điều khiển mà bạn sẽ thấy:
... ✔ Deploy complete! Project Console: https://console.firebase.google.com/project/<project-id>/overview Hosting URL: https://<projectcd -id>.web.app
Lệnh này sẽ triển khai một ứng dụng web cùng với một số Cloud Functions for Firebase (Chức năng đám mây dành cho Firebase).
Cập nhật HomeGraph
Mở URL lưu trữ trong trình duyệt của bạn (https://<project-id>.web.app
) để xem ứng dụng web. Trên giao diện người dùng web, hãy nhấp vào nút Refresh (Làm mới) để cập nhật HomeGraph qua tính năng Request Sync (Yêu cầu đồng bộ hoá) với siêu dữ liệu mới nhất về thiết bị từ ứng dụng máy giặt bị lỗi:
Mở ứng dụng Google Home và xác nhận rằng bạn có thể thấy thiết bị máy giặt có tên mới là "Máy giặt bị lỗi". Hãy nhớ chỉ định thiết bị cho một phòng có chứa thiết bị Nest.
3. Khởi động máy giặt thông minh
Nếu đã chạy lớp học lập trình Bật phương thức thực hiện cục bộ cho các hành động trên nhà thông minh, thì bạn chắc hẳn đã khởi động máy giặt thông minh ảo từ trước. Nếu quá trình này đã dừng, hãy nhớ khởi động lại thiết bị ảo.
Khởi động thiết bị
Chuyển đến thư mục virtual-device/
và chạy tập lệnh thiết bị, truyền các tham số cấu hình dưới dạng đối số:
$ cd ../../virtual-device $ npm install $ npm start -- \ --deviceId=deviceid123 --projectId=<project-id> \ --discoveryPortOut=3311 --discoveryPacket=HelloLocalHomeSDK
Xác minh rằng tập lệnh thiết bị chạy với các tham số dự kiến:
(...): UDP Server listening on 3311 (...): Device listening on port 3388 (...): Report State successful
4. Kiểm thử ứng dụng Local Home
Gửi lệnh thoại đến thiết bị Google Home thông qua lệnh thoại, chẳng hạn như:
"Ok Google, bật máy giặt cho tôi."
"Ok Google, bắt đầu máy giặt."
"Ok Google, buộc địa phương."
"Ok Google, dừng máy giặt."
Bạn sẽ thấy Trợ lý Google trả lời với nội dung "Rất tiếc, có vẻ như máy giặt bị lỗi hiện không hoạt động" khi bạn cố gắng điều khiển máy giặt sau khi "buộc gọi địa phương".
Tức là không thể kết nối với thiết bị này thông qua đường dẫn cục bộ. Trợ lý hoạt động trước khi ra câu lệnh "Ok Google, buộc địa phương" vì chúng ta sẽ quay lại sử dụng đường dẫn trên đám mây khi không thể kết nối với thiết bị này thông qua đường dẫn cục bộ. Tuy nhiên, sau khi "buộc cục bộ", tuỳ chọn quay lại đường dẫn đám mây sẽ bị tắt.
Để tìm hiểu xem vấn đề là gì, hãy sử dụng các công cụ mà chúng tôi có: Chỉ số và Ghi nhật ký trên Google Cloud Platform (GCP) cũng như Công cụ cho nhà phát triển Chrome.
5. Gỡ lỗi ứng dụng Local Home
Trong phần sau, bạn sẽ sử dụng các công cụ do Google cung cấp để tìm hiểu lý do tại sao không truy cập được thiết bị này thông qua đường dẫn cục bộ. Bạn có thể sử dụng Công cụ dành cho nhà phát triển Google Chrome để kết nối với thiết bị Google Home, xem nhật ký bảng điều khiển và gỡ lỗi ứng dụng Local Home. Bạn cũng có thể gửi nhật ký tuỳ chỉnh đến Cloud Logging để có thể nhận biết những lỗi hàng đầu mà người dùng đang gặp phải trong ứng dụng Local Home của bạn.
Kết nối công cụ dành cho nhà phát triển Chrome
Để kết nối trình gỡ lỗi với ứng dụng thực hiện cục bộ, hãy làm theo các bước sau:
- Đảm bảo rằng bạn đã liên kết thiết bị Google Home với một người dùng có quyền truy cập vào dự án Actions Console.
- Khởi động lại thiết bị Google Home của bạn để thiết bị nhận được URL của HTML cũng như cấu hình quét mà bạn đã đặt trong bảng điều khiển Actions.
- Chạy Chrome trên máy phát triển của bạn.
- Mở một thẻ Chrome mới rồi nhập
chrome://inspect
vào trường địa chỉ để khởi chạy trình kiểm tra.
Bạn sẽ thấy danh sách thiết bị trên trang và URL ứng dụng sẽ xuất hiện bên dưới tên của thiết bị Google Home.
Khởi chạy trình kiểm tra
Nhấp vào Kiểm tra bên dưới URL ứng dụng của bạn để khởi chạy Công cụ cho nhà phát triển Chrome. Chọn thẻ Console (Bảng điều khiển) và xác minh rằng bạn có thể xem nội dung của ý định IDENTIFY
do ứng dụng TypeScript in.
Kết quả này có nghĩa là trình xử lý IDENTIFY đã được kích hoạt thành công, nhưng verificationId
được trả về trong IdentifyResponse
không khớp với bất kỳ thiết bị nào trong HomeGraph. Hãy thêm một số nhật ký tuỳ chỉnh để tìm hiểu lý do.
Thêm nhật ký tuỳ chỉnh
Mặc dù SDK Local Home xuất hiện lỗi DEVICE_VERIFICATION_FAILED
, nhưng lỗi này không giúp ích nhiều trong việc tìm ra nguyên nhân gốc rễ. Hãy thêm một số nhật ký tuỳ chỉnh để đảm bảo chúng ta đang đọc và xử lý dữ liệu quét chính xác. Xin lưu ý rằng nếu chúng ta từ chối cam kết có lỗi, thông báo lỗi cũng sẽ được gửi đến Cloud Logging.
local/index.ts
identifyHandler(request: IntentFlow.IdentifyRequest):
Promise<IntentFlow.IdentifyResponse> {
console.log("IDENTIFY intent: " + JSON.stringify(request, null, 2));
const scanData = request.inputs[0].payload.device.udpScanData;
if (!scanData) {
const err = new IntentFlow.HandlerError(request.requestId,
'invalid_request', 'Invalid scan data');
return Promise.reject(err);
}
// In this codelab, the scan data contains only local device id.
// Is there something wrong here?
const localDeviceId = Buffer.from(scanData.data);
console.log(`IDENTIFY handler: received local device id
${localDeviceId}`);
// Add custom logs
if (!localDeviceId.toString().match(/^deviceid[0-9]{3}$/gi)) {
const err = new IntentFlow.HandlerError(request.requestId,
'invalid_device', 'Invalid device id from scan data ' +
localDeviceId);
return Promise.reject(err);
}
const response: IntentFlow.IdentifyResponse = {
intent: Intents.IDENTIFY,
requestId: request.requestId,
payload: {
device: {
id: 'washer',
verificationId: localDeviceId.toString(),
}
}
};
console.log("IDENTIFY response: " + JSON.stringify(response, null, 2));
return Promise.resolve(response);
}
Ngoài ra, hãy thay đổi phiên bản cục bộ của ứng dụng trên màn hình chính để chúng tôi có thể xác định xem mình có đang sử dụng đúng phiên bản hay không.
local/index.ts
const localHomeSdk = new App('1.0.1');
Sau khi thêm nhật ký tuỳ chỉnh, bạn cần biên dịch lại ứng dụng và triển khai lại lên Firebase.
$ cd ../app-faulty/local $ npm run build $ firebase deploy --only hosting
Bây giờ, hãy khởi động lại thiết bị Google Home để thiết bị có thể tải ứng dụng cục bộ trên màn hình chính đã cập nhật. Bạn có thể biết thiết bị Google Home có đang sử dụng phiên bản dự kiến hay không bằng cách xem nhật ký Bảng điều khiển trong Công cụ cho nhà phát triển Chrome.
Truy cập vào tính năng ghi nhật ký trên đám mây
Hãy xem cách sử dụng Cloud Logging để tìm lỗi. Cách truy cập vào tính năng Ghi nhật ký trên đám mây cho dự án của bạn:
- Trong bảng điều khiển Cloud Platform, hãy truy cập vào trang Dự án.
- Chọn dự án nhà thông minh của bạn.
- Trong Hoạt động, chọn Ghi nhật ký > Trình khám phá nhật ký.
Quyền truy cập vào dữ liệu ghi nhật ký được quản lý thông qua giải pháp Quản lý danh tính và quyền truy cập (IAM) đối với người dùng trong dự án Actions (Hành động). Để biết thêm thông tin chi tiết về các vai trò và quyền đối với dữ liệu ghi nhật ký, hãy xem bài viết kiểm soát quyền truy cập của tính năng Ghi nhật ký trên đám mây.
Sử dụng bộ lọc nâng cao
Chúng ta biết rằng lỗi đang xảy ra trong ý định IDENTIFY
, vì đường dẫn cục bộ không hoạt động do không xác định được thiết bị cục bộ. Tuy nhiên, chúng ta muốn biết chính xác vấn đề là gì, vì vậy trước tiên, hãy lọc các lỗi xảy ra trong trình xử lý IDENTIFY
.
Mở rộng hộp Xem trước truy vấn, hộp này sẽ chuyển thành hộp Trình tạo truy vấn. Nhập jsonPayload.intent="IDENTIFY"
vào hộp Trình tạo truy vấn rồi nhấp vào nút Chạy truy vấn.
Do đó, bạn sẽ nhận được tất cả nhật ký lỗi được gửi trong trình xử lý IDENTIFY
. Tiếp theo, hãy mở rộng lỗi cuối cùng. Bạn sẽ thấy errorCode
và debugString
mà bạn vừa đặt khi từ chối lời hứa trong trình xử lý IDENTIFY
.
Từ debugString
, chúng ta có thể biết rằng mã thiết bị cục bộ không ở định dạng mong muốn. Ứng dụng Local Home dự kiến sẽ lấy mã thiết bị cục bộ ở dạng một chuỗi bắt đầu bằng deviceid
, theo sau là 3 chữ số. Tuy nhiên, mã thiết bị cục bộ ở đây là một chuỗi hex.
Sửa lỗi
Quay lại mã nguồn nơi chúng ta phân tích cú pháp mã thiết bị cục bộ trong dữ liệu quét, chúng ta nhận thấy rằng chúng ta đã không cung cấp phương thức mã hoá khi chuyển đổi chuỗi thành byte. Dữ liệu quét được nhận dưới dạng chuỗi hex, vì vậy, hãy truyền hex
làm mã hoá ký tự khi gọi Buffer.from()
.
local/index.ts
identifyHandler(request: IntentFlow.IdentifyRequest):
Promise<IntentFlow.IdentifyResponse> {
console.log("IDENTIFY intent: " + JSON.stringify(request, null, 2));
const scanData = request.inputs[0].payload.device.udpScanData;
if (!scanData) {
const err = new IntentFlow.HandlerError(request.requestId,
'invalid_request', 'Invalid scan data');
return Promise.reject(err);
}
// In this codelab, the scan data contains only local device id.
const localDeviceId = Buffer.from(scanData.data, 'hex');
console.log(`IDENTIFY handler: received local device id
${localDeviceId}`);
if (!localDeviceId.toString().match(/^deviceid[0-9]{3}$/gi)) {
const err = new IntentFlow.HandlerError(request.requestId,
'invalid_device', 'Invalid device id from scan data ' +
localDeviceId);
return Promise.reject(err);
}
const response: IntentFlow.IdentifyResponse = {
intent: Intents.IDENTIFY,
requestId: request.requestId,
payload: {
device: {
id: 'washer',
verificationId: localDeviceId.toString(),
}
}
};
console.log("IDENTIFY response: " + JSON.stringify(response, null, 2));
return Promise.resolve(response);
}
Ngoài ra, hãy thay đổi phiên bản cục bộ của ứng dụng trên màn hình chính để chúng tôi có thể xác định xem mình có đang sử dụng đúng phiên bản hay không.
local/index.ts
const localHomeSdk = new App('1.0.2');
Sau khi khắc phục lỗi, hãy biên dịch ứng dụng và triển khai lại lên Firebase. Trong app-faulty/local
, hãy chạy:
$ npm run build $ firebase deploy --only hosting
Kiểm thử kết quả sửa lỗi
Sau khi triển khai, hãy khởi động lại thiết bị Google Home để thiết bị có thể tải ứng dụng cục bộ trên màn hình chính đã cập nhật. Đảm bảo phiên bản ứng dụng cục bộ trên trang chủ là 1.0.2 và lần này, bạn sẽ không thấy lỗi trong Bảng điều khiển công cụ dành cho nhà phát triển Chrome.
Bây giờ, bạn có thể thử gửi lại lệnh đến thiết bị.
"Ok Google, buộc địa phương."
"Ok Google, dừng máy giặt."
"Ok Google, bật máy giặt cho tôi."
...
"Ok Google, buộc sử dụng chế độ mặc định."
6. Chạy Bộ thử nghiệm dành cho nhà thông minh
Sau khi xác minh thiết bị của mình bằng các nút điều khiển cảm ứng trong ứng dụng Google Home hoặc thông qua lệnh thoại, bạn có thể dùng Bộ kiểm tra tự động dành cho nhà thông minh để xác thực các trường hợp sử dụng dựa trên loại thiết bị và đặc điểm có liên quan đến Hành động của bạn. Bộ kiểm thử chạy một loạt các chương trình kiểm thử để phát hiện các vấn đề trong Hành động của bạn và hiển thị các thông báo cung cấp thông tin về các trường hợp kiểm thử không thành công để đẩy nhanh quá trình gỡ lỗi trước khi bạn tìm hiểu sâu về nhật ký sự kiện.
Chạy Bộ thử nghiệm cho nhà thông minh
Hãy làm theo các hướng dẫn sau để kiểm thử Hành động nhà thông minh bằng Bộ kiểm thử:
- Trong trình duyệt web, hãy mở Bộ thử nghiệm cho nhà thông minh.
- Đăng nhập vào Google bằng nút ở góc trên cùng bên phải. Việc này cho phép Bộ thử nghiệm gửi các lệnh trực tiếp đến Trợ lý Google.
- Trong trường Mã dự án, hãy nhập mã dự án của Hành động trong nhà thông minh. Sau đó, hãy nhấp vào TIẾP THEO để tiếp tục.
- Trong bước Kiểm tra chế độ cài đặt, bạn sẽ thấy Máy giặt bị lỗi trong mục Thiết bị và máy móc.
- Tắt tuỳ chọn Kiểm tra yêu cầu đồng bộ hoá vì ứng dụng máy giặt mẫu không có giao diện người dùng để thêm / xoá / đổi tên máy giặt. Trong hệ thống phát hành chính thức, bạn phải kích hoạt tính năng Yêu cầu đồng bộ hoá bất cứ khi nào người dùng thêm / xoá / đổi tên thiết bị.
- Hãy bật tuỳ chọn Local Home SDK vì chúng ta sẽ thử nghiệm cả đường dẫn cục bộ và đường dẫn trên đám mây.
- Nhấp vào TIẾP THEO để bắt đầu chạy kiểm thử.
Khi các lượt kiểm thử hoàn tất, bạn sẽ thấy các lượt kiểm thử Tạm dừng/Tiếp tục trong đường dẫn cục bộ đang không thành công trong khi các lượt kiểm thử Tạm dừng/Tiếp tục trong đường dẫn trên đám mây đang vượt qua.
Thông báo lỗi phân tích
Xem xét kỹ hơn các thông báo lỗi trong các trường hợp kiểm thử không thành công. Chúng cho bạn biết trạng thái dự kiến của chương trình kiểm thử đó và trạng thái thực tế. Trong trường hợp này, đối với "Tạm dừng máy giặt", trạng thái dự kiến là isPaused: true
nhưng ở trạng thái thực tế, chúng ta đã có isPaused: false
. Tương tự, đối với "Tạm dừng máy giặt", trạng thái dự kiến là isPaused: true
, nhưng ở trạng thái thực tế, chúng ta đã có isPaused: false
.
Trong các thông báo lỗi, có vẻ như trong đường dẫn cục bộ, chúng ta đang đặt trạng thái isPaused
ngược lại.
Xác định và sửa lỗi
Hãy tìm mã nguồn mà ứng dụng Local Home gửi lệnh thực thi đến thiết bị. getDataCommand()
là hàm do executeHandler()
gọi để đặt payload
trong lệnh thực thi được gửi đến thiết bị.
local/index.ts
getDataForCommand(command: string, params: IWasherParams): unknown {
switch (command) {
case 'action.devices.commands.OnOff':
return {
on: params.on ? true : false
};
case 'action.devices.commands.StartStop':
return {
isRunning: params.start ? true : false
};
case 'action.devices.commands.PauseUnpause':
return {
// Is there something wrong here?
isPaused: params.pause ? false : true
};
default:
console.error('Unknown command', command);
return {};
}
}
Chúng ta đang đặt isPause
ở trạng thái đảo ngược. Nếu không, giá trị này phải được thiết lập thành true
khi params.pause
là true
và nếu không thì giá trị là false
. Hãy khắc phục vấn đề đó.
local/index.ts
getDataForCommand(command: string, params: IWasherParams): unknown {
switch (command) {
case 'action.devices.commands.OnOff':
return {
on: params.on ? true : false
};
case 'action.devices.commands.StartStop':
return {
isRunning: params.start ? true : false
};
case 'action.devices.commands.PauseUnpause':
return {
isPaused: params.pause ? true : false
};
default:
console.error('Unknown command', command);
return {};
}
}
Hãy thay đổi phiên bản cục bộ của ứng dụng trên màn hình chính để chúng tôi có thể xác định xem mình có đang sử dụng đúng phiên bản hay không.
local/index.ts
const localHomeSdk = new App('1.0.3');
Hãy nhớ biên dịch lại ứng dụng và triển khai lại lên Firebase. Trong app-faulty/local
, hãy chạy:
$ npm run build $ firebase deploy --only hosting
Bây giờ, hãy khởi động lại thiết bị Google Home để thiết bị có thể tải ứng dụng cục bộ trên màn hình chính đã cập nhật. Đảm bảo phiên bản ứng dụng cục bộ trên Home là 1.0.3.
Kiểm thử kết quả sửa lỗi
Bây giờ, hãy chạy lại Bộ thử nghiệm cho nhà thông minh với cùng cấu hình và bạn sẽ thấy rằng tất cả các trường hợp thử nghiệm đều đã thành công.
7. Xin chúc mừng
Xin chúc mừng! Bạn đã tìm hiểu thành công cách khắc phục sự cố cho ứng dụng Local Home thông qua Bộ thử nghiệm dành cho nhà thông minh và Ghi nhật ký trên đám mây.
Tìm hiểu thêm
Dưới đây là một số việc khác mà bạn có thể thử:
- Thêm các tính năng được hỗ trợ khác vào thiết bị của bạn và kiểm thử bằng Bộ kiểm thử.
- Thêm nhật ký tuỳ chỉnh khác vào từng trình xử lý ý định và xem những nhật ký đó trong tính năng Ghi nhật ký trên đám mây.
- Tạo trang tổng quan, thiết lập cảnh báo và truy cập vào dữ liệu chỉ số theo phương thức lập trình để nhận các chỉ số sử dụng hữu ích về Hành động của bạn.
Bạn cũng có thể tìm hiểu thêm về việc thử nghiệm và gửi một Hành động đi xem xét, bao gồm cả quy trình chứng nhận để xuất bản Hành động của bạn cho người dùng.