Giải pháp chung
Hỏi: Chúng tôi nên triển khai cơ sở hạ tầng thực hiện đơn hàng từ đám mây đến đám mây ở đâu và bằng ngôn ngữ nào?
Đáp: Miễn là hỗ trợ SSL (TLS) và OAuth 2.0 hiện đại, bạn có thể triển khai cơ sở hạ tầng của mình trên mọi nền tảng và bằng mọi ngôn ngữ mà bạn chọn. Bạn nên triển khai càng gần với phần còn lại của cơ sở hạ tầng càng tốt để cải thiện độ tin cậy và giảm độ trễ khi thực thi trên các thiết bị thực tế của người dùng.
Hỏi: Mã thiết bị có cần phải là mã riêng biệt không?
Đáp: Các mã nhận dạng không được trùng nhau. Nếu không có mã nhận dạng duy nhất trên dịch vụ của mình, thì bạn phải có mã nhận dạng duy nhất ít nhất ở cấp độ mỗi người dùng. Hãy tưởng tượng một người dùng có nhiều nhà, trong đó cả hai nhà đều có các chế độ tích hợp cho cùng một người dùng. Khi bạn yêu cầu bật đèn ở một nhà, đèn có cùng mã nhận dạng ở nhà khác sẽ không bật.
Hỏi: Tên thiết bị có cần phải là duy nhất không?
Đáp: Tên không nhất thiết phải là tên riêng biệt, mặc dù theo thời gian, chúng tôi có thể khuyến khích mọi người cải thiện tên không phù hợp sau khi thiết lập để mang lại trải nghiệm người dùng tốt hơn.
Sau đây là hướng dẫn nhanh về cách đặt tên:
- Tên phải là những thứ mà mọi người có thể nói được.
- Chúng tôi nhận dạng các chuỗi con, vì vậy nếu bạn có "đèn màu acme", chúng tôi cũng sẽ trả lời "đèn acme".
- Bạn nên sử dụng cả tên mô tả cho sản phẩm và một hoặc nhiều tên do người dùng xác định.
- Người dùng không cần đặt tên cho đèn theo tên phòng, vì chúng tôi đã có các phòng cho việc này; mỗi phòng phải có tên riêng biệt, nhưng người dùng luôn có thể dùng số nhiều để điều khiển mọi thứ (ví dụ: hai bóng đèn trong đèn tường ở văn phòng có tên là "đèn phía bắc" và "đèn phía đông", nhưng có thể được điều khiển chỉ bằng tên "đèn").
Hỏi: Trạng thái thiết bị được cập nhật với tần suất như thế nào?
A: Trạng thái tạm thời được truy xuất khi có QUERY hoặc EXECUTE. Đây là những hành động do người dùng bắt đầu. Nếu người dùng hỏi "đèn có đang bật không?" hoặc muốn tăng độ sáng của đèn, chúng ta cần thực hiện một truy vấn để xác định trạng thái hiện tại.
Hỏi: Có thể cập nhật Home Graph trực tiếp bằng trạng thái hiện tại của thiết bị không?
Đáp: Có, hãy sử dụng lệnh gọi API Report State.
Liên kết tài khoản và OAuth
Hỏi: Chúng ta có cần liên kết tài khoản không?
Đáp: Có, bạn phải liên kết tài khoản để kết nối các thiết bị của người dùng với dịch vụ đám mây của nhà cung cấp.
Hỏi: Đối với OAuth, chúng tôi hết hạn mã thông báo truy cập sau mỗi 15,213 giờ, như vậy có được không?
Đáp: Có, nhưng vui lòng thử với thời gian hết hạn khá ngắn, chẳng hạn như 10 đến 20 phút. Ứng dụng OAuth của chúng ta sẽ làm mới mã thông báo khi cần và việc thử nghiệm với thời gian hết hạn ngắn sẽ chứng minh rằng ứng dụng đang hoạt động.
Ý định
Hỏi: Khi nào quá trình đồng bộ hoá diễn ra?
Đáp: QUÁ TRÌNH ĐỒNG BỘ HOÁ diễn ra ngay sau khi hoàn tất OAuth và sau khi thực hiện lệnh gọi Request Sync (Yêu cầu đồng bộ hoá).
Hỏi: Tại sao SYNC
không hoạt động?
Đáp: Có một số lý do phổ biến khiến việc này có thể không thành công.
Bạn đang gửi sai loại thiết bị.
- Ví dụ: chúng tôi dự kiến là
action.devices.types.LIGHT
, nhưng bạn gửiaction.devices.types.Light
.
- Ví dụ: chúng tôi dự kiến là
Bạn đang gửi các loại thiết bị không được hỗ trợ.
- Ví dụ: bạn gửi
action.devices.types.FLASHLIGHT
– đây không phải là nội dung chúng tôi hỗ trợ.
- Ví dụ: bạn gửi
Bạn đang gửi các trường không hợp lệ/không được hỗ trợ.
- Ví dụ: bạn có một trường không có trong quy cách của chúng tôi.
Đã xảy ra một số vấn đề khác về định dạng với phản hồi SYNC của bạn.
- Kiểm tra bảng đấu của bạn!
Bạn đang gặp vấn đề về việc liên kết tài khoản.
- Vui lòng xác minh rằng bạn đang nhận được mã truy cập hợp lệ trong tiêu đề Auth của yêu cầu SYNC.
Bạn mất quá nhiều thời gian để phản hồi yêu cầu SYNC.
- Vui lòng xác minh rằng bạn đang phản hồi yêu cầu SYNC trong vòng 5 giây.
Hỏi: Phản hồi "đang chờ xử lý" có được không?
Đáp: Chúng tôi rất muốn nhận được phản hồi thành công/thất bại thay vì phản hồi đang chờ xử lý, nếu thiết bị của bạn có sẵn theo thời gian thực. Vui lòng liên hệ với chúng tôi nếu bạn cảm thấy cần có phản hồi "đang chờ xử lý" – chúng tôi nhận thấy một số thiết bị có công suất thấp, không theo thời gian thực có thể yêu cầu phản hồi đang chờ xử lý và mô hình thực thi không đồng bộ.
Kiểm thử và gửi
Hỏi: Chúng tôi có thể thiết lập một môi trường đám mây phát triển không?
Đáp: Có, bạn có thể kiểm thử một môi trường và cấu hình đám mây chưa được ra mắt.
Hỏi: Thao tác của tôi không xuất hiện trong phần Điều khiển nhà của ứng dụng Google Home. Chuyện gì đang xảy ra vậy?
Đáp: Xác nhận rằng bạn là Nhà phát triển của dự án này.
Trạng thái báo cáo
Hỏi: Có điều kiện tiên quyết nào để triển khai Report State không?
Đáp: Dự án cần sử dụng Smart Home API, hỗ trợ OAuth2 và cần có những đặc điểm có(các) trạng thái cần báo cáo.
Hỏi: Chúng ta cần Báo cáo trạng thái trên thiết bị bao lâu một lần?
Đáp: Google quan tâm đến quá trình chuyển đổi và trạng thái cuối cùng. Tuy nhiên, nếu có nhiều thay đổi về trạng thái trong một khoảng thời gian ngắn (ví dụ: người dùng mở và đóng tủ lạnh 3 lần trong một phút hoặc trượt bộ điều chỉnh độ sáng), thì chúng ta chỉ cần trạng thái cuối cùng được báo cáo.
Hỏi: Có cần gửi toàn bộ trạng thái thiết bị khi thực hiện lệnh gọi Báo cáo trạng thái không?
Đáp: Không hỗ trợ các bản cập nhật trạng thái một phần, vì vậy, các lệnh gọi Report State phải luôn bao gồm tất cả dữ liệu cho một đặc điểm cụ thể đã được cập nhật. Nếu hai đặc điểm tạo ra sự không nhất quán, thì chúng phải được báo cáo cùng nhau.
Hỏi: Google có thể truy vấn thiết bị của tôi để biết trạng thái (tức là thăm dò thiết bị) không?
Đáp: Đây là cơ chế dự phòng mà bạn không nên dùng. Nếu cần thường xuyên quay lại việc thăm dò thiết bị cho những người dùng đó, chúng tôi không thể đảm bảo mức tải bổ sung sẽ là bao nhiêu. Nhu cầu này xuất phát từ các nền tảng hiển thị mới. Ngoài vấn đề tải không xác định, điều này còn làm giảm trải nghiệm người dùng. Chúng tôi cho rằng Report State là yếu tố quan trọng đối với nền tảng này.
Hỏi: Những đặc điểm nào hiện hỗ trợ Trạng thái báo cáo?
Đáp: Chúng tôi hỗ trợ tất cả các trait công khai có trạng thái liên kết. Mọi thay đổi về trạng thái Trực tuyến của thiết bị cũng phải được báo cáo.
Xin lưu ý rằng Cảnh không có trạng thái. Tuy nhiên, các lệnh này có thể dẫn đến việc thay đổi(các) trạng thái của(các) thiết bị. Nếu có bất kỳ thiết bị nào trong Google Home Graph có trạng thái thay đổi, thì bạn cần báo cáo lại.
Hỏi: Report State có yêu cầu gửi dấu thời gian không?
Đáp: Bạn không cần dấu thời gian; trạng thái cuối cùng được gửi sẽ ghi đè các lệnh gọi trước đó.
Hỏi: Tôi có cần báo cáo trạng thái riêng nếu đã gửi trạng thái trong Query và/hoặc Execute không?
Đáp: Home Graph chỉ lưu trữ trạng thái được gửi qua Report State. Trạng thái được trả về dưới dạng phản hồi cho các ý định THỰC THI và TRUY VẤN chỉ được dùng cho các phản hồi bằng lời nói cho người dùng và không được lưu trữ. Do đó, bạn nên gọi Report State ngay cả khi trạng thái mới của thiết bị đã được trả về dưới dạng phản hồi cho ý định EXECUTE hoặc QUERY.
Hỏi: Điều gì sẽ xảy ra nếu tôi không triển khai hoàn toàn Report State trong thời hạn đã cho?
Đáp: Điều này sẽ dẫn đến trải nghiệm người dùng kém, chẳng hạn như trong Google Home app (GHA) và các nền tảng trực quan. Điều này có nghĩa là nhiều ý định QUERY sẽ được gửi để thăm dò trạng thái và chúng tôi không thể đảm bảo rằng điều này sẽ tương ứng với tải bổ sung trên đám mây của đối tác.
Hỏi: Làm cách nào để kiểm thử việc triển khai Trạng thái báo cáo?
Đáp: Sử dụng Home Graph Viewer (Trình xem biểu đồ nhà) – một công cụ kiểm thử tự phục vụ cho phép bạn xem các trạng thái hiện tại của thiết bị được lưu trữ trong Home Graph.
Hỏi: Chúng tôi có thể sử dụng một requestId ngẫu nhiên cho Report State không?
Đáp: Các đối tác nên sử dụng cùng một requestId mà họ nhận được từ yêu cầu EXECUTE nếu Report State được kích hoạt bởi yêu cầu EXECUTE, nếu không, bạn chỉ cần sử dụng một requestId ngẫu nhiên.
Hỏi: Nếu người dùng có nhiều thiết bị và một trong số đó thay đổi trạng thái, thì chúng ta có phải báo cáo trạng thái mới nhất của tất cả các thiết bị không?
Đáp: Không. Bạn chỉ phải báo cáo trạng thái của thiết bị cụ thể đó.
Các phương pháp hay nhất
Câu hỏi: Loại độ trễ nào được chấp nhận?
Đáp: Lý tưởng nhất là dưới 200 mili giây, từ 2 đến 5 giây là chấp nhận được. Nếu độ trễ của bạn ở mức khoảng 5 giây, hãy liên hệ với chúng tôi.
Hỏi: Làm cách nào để loa có tính năng kích hoạt bằng giọng nói phản hồi đúng cách khi không có mạng?
A: Trả về trạng thái ngoại tuyến cho các thiết bị không kết nối mạng. Chúng tôi trả về "hiện không có sẵn" dưới dạng TTS cho lỗi này. Để biết thêm thông tin, hãy xem phần Lỗi và trường hợp ngoại lệ.