Report State là một tính năng quan trọng cho phép
Home Hành động chủ động báo cáo trạng thái mới nhất của
thiết bị của người dùng quay lại Google Home Graph thay vì đợi
Ý định QUERY
.
Report State báo cáo cho Google về trạng thái thiết bị của người dùng
với agentUserId
được chỉ định được liên kết với các lượt chuyển đổi đó (được gửi trong tệp gốc
SYNC
). Khi Google Assistant muốn thực hiện một hành động
yêu cầu hiểu trạng thái hiện tại của một thiết bị, công cụ này chỉ cần nhìn vào
đưa thông tin trạng thái vào Home Graph
cấp ý định QUERY
cho nhiều đám mây của bên thứ ba trước khi phát hành
Ý định EXECUTE
.
Nếu không có Report State, do nhiều nhà cung cấp đèn cung cấp ở
một phòng khách, lệnh Ok Google, làm sáng phòng khách của tôi yêu cầu
giải quyết nhiều ý định QUERY
được gửi đến nhiều đám mây, thay vì
chỉ cần tra cứu giá trị độ sáng hiện tại dựa trên giá trị
báo cáo trước đây. Để có trải nghiệm người dùng tốt nhất,
Assistant cần có trạng thái hiện tại của thiết bị,
mà không cần phải đi khứ hồi tới thiết bị.
Sau SYNC
ban đầu cho một thiết bị, nền tảng sẽ gửi một ý định QUERY
thu thập trạng thái của thiết bị để điền Home Graph.
Sau thời điểm đó, Home Graph chỉ lưu trữ trạng thái
đã gửi bằng Report State.
Khi gọi Report State, hãy nhớ cung cấp đầy đủ thông tin
dữ liệu trạng thái của một tính trạng cụ thể. Home Graph cập nhật trạng thái trên
theo từng giai đoạn và ghi đè tất cả dữ liệu cho tính trạng đó khi
Cuộc gọi Report State đã được thực hiện. Ví dụ: nếu bạn đang báo cáo
trạng thái của tính năng StartStop, tải trọng
cần cung cấp giá trị cho cả isRunning
và isPaused
.
Bắt đầu
Để triển khai Report State, hãy làm theo các bước sau:
Bật Google HomeGraph API
-
Trong Google Cloud Console, hãy chuyển đến trang HomeGraph API.
Truy cập trang API HomeGraph - Chọn dự án khớp với mã dự án smart home của bạn.
- Nhấp vào BẬT.
Tạo Khoá tài khoản dịch vụ
Hãy làm theo những hướng dẫn sau để tạo khoá tài khoản dịch vụ trên Google Cloud Console:
-
Trong Google Cloud Console, hãy chuyển đến trang Tạo khoá tài khoản dịch vụ.
Chuyển đến trang Tạo khoá tài khoản dịch vụ - Trong danh sách Tài khoản dịch vụ, hãy chọn Tài khoản dịch vụ mới.
- Trong trường Tên tài khoản dịch vụ, hãy nhập tên.
- Trong trường Mã tài khoản dịch vụ, hãy nhập một mã.
Trong danh sách Vai trò, hãy chọn Tài khoản dịch vụ > Người tạo mã thông báo cho tài khoản dịch vụ.
Đối với Loại khoá, hãy chọn JSON.
- Nhấp vào Tạo. Tệp JSON chứa khoá của bạn tải xuống máy tính của bạn.
Gọi API
Chọn một tuỳ chọn trong các thẻ bên dưới:
HTTP
Home Graph cung cấp một điểm cuối HTTP
- Sử dụng tệp JSON của tài khoản dịch vụ đã tải xuống để tạo một trang web JSON Mã thông báo (JWT). Để biết thêm thông tin, hãy xem Xác thực bằng tài khoản dịch vụ.
- Lấy mã truy cập OAuth 2.0 bằng
https://www.googleapis.com/auth/homegraph
phạm vi đang sử dụng OAuth2l: - Tạo yêu cầu JSON bằng
agentUserId
. Dưới đây là yêu cầu JSON mẫu cho Trạng thái và Thông báo của báo cáo: - Kết hợp Trạng thái báo cáo và JSON thông báo cùng mã thông báo trong yêu cầu POST qua HTTP
yêu cầu đến điểm cuối Google Home Graph. Sau đây là ví dụ về cách
để thực hiện yêu cầu trong dòng lệnh bằng cách sử dụng
curl
, như một bài kiểm thử:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "requestId": "123ABC", "agentUserId": "user-123", "payload": { "devices": { "states": { "light-123": { "on": true } } } } }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
gRPC
Home Graph cung cấp một điểm cuối gRPC
- Tải định nghĩa dịch vụ vùng đệm giao thức cho Home Graph API.
- Làm theo tài liệu dành cho nhà phát triển gRPC để tạo mã ứng dụng khách cho một trong các ngôn ngữ được hỗ trợ.
- Gọi phương thức ReportStateAndNotification.
Node.js
Ứng dụng Node.js của API Google cung cấp các mối liên kết cho API Home Graph.
- Khởi động dịch vụ
google.homegraph
bằng Thông tin xác thực mặc định của ứng dụng. - Gọi phương thức
reportStateAndNotification
bằng ReportStateAndNotificationRequest. Phương thức này trả vềPromise
có ReportStateAndNotificationResponse.
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.reportStateAndNotification({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { states: { "PLACEHOLDER-DEVICE-ID": { on: true } } } } } });
Java
Thư viện ứng dụng API HomeGraph cho Java cung cấp các liên kết cho API Home Graph.
- Khởi động
HomeGraphApiService
bằng Thông tin xác thực mặc định của ứng dụng. - Gọi phương thức
reportStateAndNotification
bằngReportStateAndNotificationRequest
. Phương thức này trả về mộtReportStateAndNotificationResponse
.
// Get Application Default credentials. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(List.of("https://www.googleapis.com/auth/homegraph")); // Create Home Graph service client. HomeGraphService homegraphService = new HomeGraphService.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) .setApplicationName("HomeGraphExample/1.0") .build(); // Build device state payload. Map<?, ?> states = Map.of("on", true); // Report device state. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states)))); homegraphService.devices().reportStateAndNotification(request); }
Trạng thái báo cáo thử nghiệm
Để chuẩn bị hành động của bạn cho quy trình chứng nhận, bạn cần thử nghiệm Report State.
Để làm việc này, bạn nên sử dụng công cụ Trình xem Home Graph. một ứng dụng web độc lập, không cần tải xuống hoặc triển khai.
Trang tổng quan Report State vẫn còn khả dụng, nhưng không được dùng nữa và không còn được hỗ trợ nữa.
Trang tổng quan về trạng thái báo cáo
Điều kiện tiên quyết
Trước khi có thể thử nghiệm hành động, bạn cần có Tài khoản dịch vụ
Khoá và agentUserId
của bạn. Nếu bạn đã có Khoá tài khoản dịch vụ và
agentUserId
xem Triển khai Report State
Trang tổng quan.
Triển khai trang tổng quan Trạng thái báo cáo
Sau khi bạn có Khoá tài khoản dịch vụ và Mã nhận dạng người dùng của đại lý cho dự án của mình,
tải xuống và triển khai phiên bản mới nhất từ
Report State
Trang tổng quan.
Sau khi bạn tải phiên bản mới nhất xuống, hãy làm theo hướng dẫn từ
bao gồm README.MD
tệp.
Sau khi bạn triển khai trang tổng quan của Report State, hãy truy cập trang tổng quan từ URL sau (thay thế your_project_id bằng mã dự án):
http://<your-project-id>.appspot.com
Trên trang tổng quan, hãy làm như sau:
- Chọn tệp khoá tài khoản
- Thêm agentUserId của bạn
Sau đó, hãy nhấp vào Danh sách.
Mọi thiết bị của bạn đều có trong danh sách. Sau khi danh sách đã được điền, bạn có thể sử dụng Nút Refresh (Làm mới) để cập nhật trạng thái thiết bị. Nếu có thay đổi về trạng thái thiết bị, hàng được đánh dấu bằng màu xanh lục.
Phản hồi Lỗi
Bạn có thể nhận được một trong các phản hồi lỗi sau đây khi gọi Report State. Các phản hồi này có dạng trạng thái HTTP mã.
400 Bad Request
- Máy chủ không thể xử lý yêu cầu mà máy khách gửi do cú pháp không hợp lệ. Nguyên nhân thường gặp bao gồm JSON không đúng định dạng hoặc sử dụngnull
thay vì "" cho một giá trị chuỗi.404 Not Found
– Tài nguyên được yêu cầu không thể tìm thấy nhưng có thể sẽ có trong tương lai. Thông thường, điều này có nghĩa là chúng tôi không thể tìm thấy thiết bị được yêu cầu. Điều này cũng có thể có nghĩa là tài khoản người dùng chưa được liên kết với Google hoặc chúng tôi đã nhận đượcagentUserId
không hợp lệ. Đảm bảoagentUserId
khớp với giá trị được cung cấp trong Phản hồi SYNC và bạn đã đúng cách xử lý ý định HUỶ KẾT NỐI.