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 từ đám mây đến đám mây ở đâu và bằng ngôn ngữ nào?
Đáp: Miễn là nền 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 bất kỳ nền tảng nào và bằng bất kỳ ngôn ngữ nào mà bạn chọn. Bạn nên triển khai gần nhất có thể 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 tế của người dùng.
Hỏi: Mã thiết bị có cần phải là mã duy nhất không?
Đáp: Các mã nhận dạng phải là duy nhất. Nếu bạn không có mã nhận dạng duy nhất trên dịch vụ, thì ít nhất các mã nhận dạng đó phải là duy nhất ở cấp 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 tích hợp với cùng một người dùng. Việc yêu cầu bật đèn trong một ngôi nhà không được bật đèn có cùng mã nhận dạng trong một ngôi nhà khác.
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 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 đặt tên nhanh:
- Tên phải là những từ mà mọi người có thể nói được.
- 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ó "acme color light", chúng tôi cũng sẽ trả lời "acme light".
- 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 phòng cho đèn vì chúng tôi đã có phòng cho việc đó; mỗi phòng phải có tên riêng biệt, nhưng bạn luôn có thể sử dụng số nhiều để ra lệnh cho 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 bạn có thể ra lệnh chỉ bằng "đèn").
Hỏi: Trạng thái thiết bị được cập nhật bao lâu một lần?
Đáp: Trạng thái tạm thời được truy xuất khi QUERY hoặc EXECUTE (truy vấn hoặc thực thi) 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ó sáng không?" hoặc muốn tăng độ sáng của đèn, chúng ta sẽ cần thực hiện một truy vấn để tìm ra 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 một 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 thiết bị của người dùng với các dịch vụ đám mây của nhà cung cấp.
Hỏi: Đối với OAuth, chúng tôi sẽ hết hạn mã truy cập sau mỗi 15, 213 giờ.Bạn có đồng ý không?
Đáp: Có, nhưng vui lòng thử nghiệm 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 kiểm thử với thời gian hết hạn ngắn sẽ chứng minh rằng mã thông báo đó đang hoạt động.
Ý định
Hỏi: Quá trình SYNC diễn ra khi nào?
Đá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 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 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
action.devices.types.LIGHT
, nhưng bạn gửiaction.devices.types.Light
.
- Ví dụ: chúng tôi dự kiến
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à điều 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.
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ã thông báo truy cập hợp lệ trong tiêu đề Auth của yêu cầu SYNC.
Bạn đang 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: Tôi có thể gửi phản hồi "đang chờ xử lý" không?
Đáp: Chúng tôi rất mong nhận được phản hồi thành công/không thành công thay vì đ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 một phản hồi "đang chờ xử lý". Chúng tôi nhận thấy rằng một số thiết bị tiêu thụ điện năng 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 ta có thể thiết lập môi trường phát triển trên đám mây không?
Đáp: Có, bạn có thể kiểm thử một môi trường đám mây và cấu hình chưa khởi chạy.
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. Điều gì đang xảy ra?
Đá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 Trạng thái báo cáo không?
Đáp: Dự án cần sử dụng API Nhà thông minh, 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 ta 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?
Đáp: Google quan tâm đến quá trình chuyển đổi và trạng thái cuối. Tuy nhiên, nếu có nhiều thay đổi 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 ba lần trong một phút hoặc trượt một bộ điều chỉnh độ sáng), thì chúng ta 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?
Đáp: Chúng tôi không hỗ trợ tính năng 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ò ý kiến thiết bị) không?
Đáp: Đây là cơ chế dự phòng mà bạn không nên sử dụng. Nếu cần quay lại việc thường xuyên thăm dò ý kiến 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 hình ảnh mới. Ngoài vấn đề tải không xác định, điều này sẽ làm giảm trải nghiệm người dùng. Chúng tôi cảm thấy Report State 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ợ Trạng thái báo cáo?
Đáp: Tất cả các đặc điểm công khai có trạng thái được liên kết đều được hỗ trợ. Mọi thay đổi trong 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 sự kiện này có thể dẫn đến việc thay đổi (các) trạng thái của thiết bị. Nếu bất kỳ thiết bị nào trong Google Home Graph có trạng thái thay đổi, bạn cần báo cáo lại.
Hỏi: Trạng thái báo cáo có yêu cầu gửi dấu thời gian không?
Đáp: 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 biệt nếu đang gửi trạng thái trong Truy vấn và/hoặc Thực thi 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 ý định EXECUTE và QUERY 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 EXECUTE hoặc QUERY.
Hỏi: Nếu không triển khai đầy đủ Trạng thái báo cáo trong thời hạn đã định thì sẽ có hậu quả gì?
Đá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 hình ảnh. Điều này có nghĩa là nhiều ý định QUERY sẽ được gửi để thăm dò ý kiến về trạng thái và chúng tôi không thể đảm bảo đ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 Trình xem biểu đồ trang chủ – một công cụ kiểm thử tự phục vụ cho bạn thấy 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 Trạng thái báo cáo không?
Đáp: Đố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à trạng thái của một trong các thiết bị đó thay đổ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ả thiết bị không?
Đáp: Không. Bạn chỉ cần 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: Độ trễ như thế nào là chấp nhận được?
Đáp: Lý tưởng 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 dao động quanh mức 5 giây, hãy liên hệ với chúng tôi.
Hỏi: Làm cách nào để loa điều khiển bằng giọng nói phản hồi đúng cách khi không có mạng?
Đáp: 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ó" 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à ngoại lệ.