Câu hỏi thường gặp về nhà thông minh

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 Cloud-to-cloud ở đâu và bằng ngôn ngữ nào?

Trả lời: Miễn là cơ sở hạ tầng đó 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 càng tốt với phần còn lại của cơ sở hạ tầng để cải thiện độ tin cậy và giảm độ trễ khi thực thi trên các thiết bị thực của người dùng.


Hỏi: Mã thiết bị có cần phải là duy nhất không?

Trả lời: Mã thiết bị phải là duy nhất. Nếu bạn không có mã duy nhất trên dịch vụ của mình, thì mã đó phải là 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 tính năng tích hợp cho cùng một người dùng. Yêu cầu bật đèn ở một nhà không được bật đèn có cùng mã ở nhà khác.


Hỏi: Tên thiết bị có cần phải là duy nhất không?

Trả lời: Tên không cần phải là duy nhấ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 cách đặt tên không phù hợp sau khi thiết lập để mang lại trải nghiệm tốt hơn cho người dùng.

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ể thực sự nói.
  • Chúng tôi nhận dạng các tập hợp con của chuỗi, 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 đặt 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 phòng cho đèn, vì chúng tôi có phòng cho việc đó; đèn phải có tên duy nhất cho mỗi phòng, nhưng luôn có thể sử dụng số nhiều để điều khiển mọi thứ (ví dụ: hai bóng đèn trong đèn treo tường ở văn phòng là "đèn phía bắc" và "đèn phía đông", nhưng có thể được điều khiển chỉ bằng "đè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?

Trả lời: Trạng thái tạm thời được truy xuất khi có QUERY hoặc EXECUTE, là các hành động do người dùng khởi tạo. Nếu người dùng hỏi "đèn có bật không?" hoặc muốn làm sáng đèn, chúng tôi sẽ 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 trực tiếp Home Graph bằng trạng thái hiện tại của thiết bị không?

Trả lời: Có, hãy sử dụng lệnh gọi API Report State.


Liên kết tài khoản và OAuth

Trả lời: Có, bạn cần 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ã truy cập sau mỗi 15,213 giờ, như vậy có được không?

Trả lời: Có, nhưng vui lòng kiểm thử với thời gian hết hạn khá ngắn, chẳng hạn như 10 – 20 phút. Ứng dụng OAuth của chúng tôi sẽ làm mới mã thông báo khi cần và việc kiểm thử 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 SYNC xảy ra?

Trả lời: SYNC xảy ra ngay sau khi hoàn tất OAuth và sau khi thực hiện lệnh gọi Yêu cầu đồng bộ hoá.


Hỏi: Tại sao SYNC không hoạt động?

Trả lời: Có một số lý do phổ biến khiến điều 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 mong đợi action.devices.types.LIGHT, nhưng bạn gửi action.devices.types.Light.
  • 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à thứ mà chúng tôi hỗ trợ.
  • 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 thông số kỹ thuật của chúng tôi.
  • Có 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 dấu ngoặc!
  • 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?

Trả lời: 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 trong thời gian thực. Vui lòng liên hệ nếu bạn cảm thấy cần phản hồi "đang chờ xử lý" – chúng tôi nhận thấy rằng một số thiết bị công suất thấp, không phải 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ôi trường đám mây phát triển không?

Trả lời: Có, bạn có thể kiểm thử cấu hình và môi trường đám mây chưa ra mắt.


Hỏi: Hành động 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?

Trả lời: Xác nhận rằng bạn là Nhà phát triển cho dự án này.


Báo cáo trạng thái

Hỏi: Có điều kiện tiên quyết nào để triển khai Báo cáo trạng thái không?

Trả lời: Dự án cần sử dụng Smart Home API, hỗ trợ OAuth2 và cần có các đặc điểm có(các) trạng thái cần báo cáo.


Hỏi: Chúng tôi cần Báo cáo trạng thái trên thiết bị với tần suất như thế nào?

Trả lời: 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 tôi chỉ cần báo cáo trạng thái cuối cùng.


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?

Trả lời: Chúng tôi không hỗ trợ cập nhật trạng thái một phần, vì vậy, 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 để lấy trạng thái (tức là thăm dò thiết bị) không?

Trả lời: Đây là cơ chế dự phòng mà bạn không nên dùng. Nếu cần quay lại thăm dò thiết bị thường xuyên 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 giao diện trực quan mới. Ngoài vấn đề về mức tải không xác định, trải nghiệm người dùng sẽ bị giảm sút. Chúng tôi cảm thấy rằng Report State là rất quan trọng đối với nền tảng này.


Hỏi: Hiện tại, những đặc điểm nào hỗ trợ Báo cáo trạng thái?

Trả lời: Chúng tôi hỗ trợ tất cả các đặc điểm công khai có trạng thái được 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, chúng có thể dẫn đến việc thay đổi(các) trạng thái của(các) thiết bị. Nếu 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: Báo cáo trạng thái có yêu cầu gửi dấu thời gian không?

Trả lời: Chúng tôi không yêu cầu 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 không nếu đã gửi trạng thái trong Truy vấn và/hoặc Thực thi?

Trả lời: 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 ý định THỰC THI và TRUY VẤN chỉ được dùng cho 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 THỰC THI hoặc TRUY VẤN.


Hỏi: Hậu quả của việc không triển khai hoàn toàn Báo cáo trạng thái trong thời hạn nhất định là gì?

Trả lời: Điều này sẽ dẫn đến trải nghiệm người dùng bị giảm sút, ví dụ: trong Google Home app (GHA) và các giao diện trực quan. Điều này có nghĩa là nhiều ý định TRUY VẤN 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 mức 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 Báo cáo trạng thái của chúng tôi?

Trả lời: Sử dụng Trình xem Home Graph – một công cụ kiểm thử tự phục vụ cho bạn biết trạng thái thiết bị hiện tại được lưu trữ trong Home Graph.


Hỏi: Chúng tôi có thể sử dụng requestId ngẫu nhiên cho Báo cáo trạng thái không?

Trả lời: Đối tác nên sử dụng cùng một requestId mà họ nhận được từ yêu cầu THỰC THI nếu Report State được kích hoạt bởi yêu cầu THỰC THI, nếu không, bạn chỉ cần sử dụng requestId ngẫu nhiên.


Hỏi: Nếu người dùng có nhiều thiết bị và một trong số đó bị thay đổi trạng thái, thì chúng tôi có phải báo cáo trạng thái mới nhất của tất cả thiết bị không?

Trả lời: 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

Hỏi: Loại độ trễ nào được chấp nhận?

Trả lời: Lý tưởng nhất là dưới 1000 mili giây, từ 2 đến 5 giây là được. Nếu độ trễ của bạn đang ở 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 kích hoạt bằng giọng nói phản hồi đúng cách khi không có mạng?

Trả lời: Trả về trạng thái ngoại tuyến cho các thiết bị ngoại tuyến. 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ệ.