ژنرال
س: کجا و به چه زبانی باید زیرساخت تکمیل ابر به ابر خود را پیاده سازی کنیم؟
پاسخ: تا زمانی که از SSL مدرن (TLS) و OAuth 2.0 پشتیبانی می کند، می توانید زیرساخت خود را بر روی هر پلتفرم و به هر زبانی که انتخاب می کنید پیاده سازی کنید. برای بهبود قابلیت اطمینان و کاهش تأخیر اجرا در دستگاه های کاربر واقعی، توصیه می کنیم تا حد امکان نزدیک به بقیه زیرساخت های خود مستقر شوید.
س: آیا شناسه دستگاه باید منحصر به فرد باشد؟
A: شناسه ها باید منحصر به فرد باشند. اگر شناسههای منحصربهفرد در سراسر سرویس خود ندارید، باید حداقل در سطح هر کاربر منحصربهفرد باشند. کاربری را با چندین خانه تصور کنید، جایی که هر دو خانه با یک کاربر ادغام می شوند. درخواست روشن کردن چراغ در یک خانه نباید چراغی را با همان شناسه در خانه دیگر روشن کند.
س: آیا نام دستگاه ها باید منحصر به فرد باشد؟
پاسخ: لازم نیست نامها منحصر به فرد باشند، اگرچه با گذشت زمان ممکن است افراد را تشویق کنیم که نامگذاری بد را پس از راهاندازی برای تجربه کاربری بهتر بهبود بخشند.
در اینجا یک راهنمای نامگذاری سریع آمده است:
- نام ها باید چیزهایی باشند که مردم واقعاً می توانند بگویند.
- ما زیرمجموعههای رشتهها را تشخیص میدهیم، بنابراین اگر «نور رنگ acme» دارید، به «نور acme» نیز پاسخ خواهیم داد.
- ما هم یک نام توصیفی برای محصول و هم یک یا چند نام تعریف شده توسط کاربر را توصیه می کنیم.
- کاربران نیازی به نام اتاق چراغ ها ندارند، زیرا ما اتاق هایی برای آن داریم. آنها باید اسامی منحصر به فرد در هر اتاق داشته باشند، اما همیشه می توانند از جمع برای فرمان دادن به همه چیز استفاده کنند (به عنوان مثال، دو لامپ در دیوارکوب های اداری "نور شمال" و "نور شرقی" هستند، اما می توان آنها را فقط به عنوان "چراغ" فرمان داد).
س: وضعیت دستگاه هر چند وقت یکبار به روز می شود؟
A: حالت زودگذر بر روی QUERY یا EXECUTE بازیابی می شود که اقداماتی هستند که توسط کاربر آغاز شده است. اگر کاربر بپرسد "آیا چراغ روشن است؟"، یا بخواهد نوری را روشن کند، باید یک پرس و جو انجام دهیم تا وضعیت فعلی را بفهمیم.
س: آیا می توان Home Graph را با وضعیت فعلی دستگاه به طور مستقیم به روز کرد؟
پاسخ: بله، از تماس API Report State استفاده کنید.
پیوند حساب و OAuth
س: آیا باید پیوند حساب را انجام دهیم؟
پاسخ: بله، برای اتصال دستگاه های کاربر به خدمات ابری ارائه دهنده، پیوند حساب لازم است.
س: برای OAuth، ما توکن های دسترسی را هر 15.213 ساعت منقضی می کنیم، آیا مشکلی ندارد؟
پاسخ: بله، اما لطفاً با یک زمان انقضا نسبتاً کوتاه، مثلاً 10-20 دقیقه، تست کنید. مشتری OAuth ما باید در صورت نیاز توکنها را تازهسازی کند، و آزمایش با زمان انقضای کوتاه ثابت میکند که این کار درست است.
مقاصد
س: چه زمانی SYNC اتفاق می افتد؟
پاسخ: همگامسازی بلافاصله پس از تکمیل OAuth و پس از برقراری تماس درخواست همگامسازی انجام میشود.
س: چرا SYNC
کار نمی کند؟
پاسخ: چندین دلیل متداول وجود دارد که چرا این ممکن است شکست بخورد.
شما در حال ارسال انواع دستگاه اشتباه هستید.
- برای مثال، ما انتظار
action.devices.types.LIGHT
داریم، اما شماaction.devices.types.Light
ارسال می کنید.
- برای مثال، ما انتظار
شما در حال ارسال انواع دستگاه پشتیبانی نشده هستید.
- برای مثال، شما
action.devices.types.FLASHLIGHT
را ارسال می کنید - این چیزی نیست که ما پشتیبانی کنیم.
- برای مثال، شما
شما در حال ارسال فیلدهای نامعتبر/ پشتیبانی نشده هستید.
- به عنوان مثال، شما یک فیلد دارید که در مشخصات ما نیست.
مشکل قالببندی دیگری در پاسخ SYNC شما وجود دارد.
- براکت های خود را بررسی کنید!
شما با مشکل پیوند حساب مواجه هستید.
- لطفاً بررسی کنید که یک نشانه دسترسی معتبر در سرصفحه Auth درخواست SYNC دریافت میکنید.
پاسخ دادن به درخواست SYNC خیلی طول می کشد.
- لطفاً بررسی کنید که در عرض 5 ثانیه به درخواست SYNC پاسخ می دهید.
س: آیا پاسخ «در انتظار» خوب است؟
پاسخ: اگر دستگاههای شما در زمان واقعی در دسترس باشند، ما بهشدت پاسخ موفقیتآمیز/شکست را ترجیح میدهیم، به جای پاسخهای معلق. لطفاً اگر احساس میکنید که به یک پاسخ «در انتظار» نیاز دارید، تماس بگیرید -- ما میدانیم که برخی از دستگاههای کم مصرف و غیر همزمان ممکن است به یک پاسخ معلق و مدل اجرای ناهمزمان نیاز داشته باشند.
تست و ارسال
س: آیا می توانیم یک محیط ابری توسعه راه اندازی کنیم؟
پاسخ: بله، می توانید یک محیط ابری راه اندازی نشده و پیکربندی را آزمایش کنید.
س: «اقدام من» در بخش «کنترل خانه» برنامه Google Home قابل مشاهده نیست. چه خبر است؟
پاسخ: تأیید کنید که توسعهدهنده این پروژه هستید.
گزارش وضعیت
س: آیا پیش نیازهایی برای اجرای گزارش State وجود دارد؟
پاسخ: پروژه باید از Smart Home API استفاده کند، از OAuth2 پشتیبانی کند و باید ویژگی هایی داشته باشد که حالت(های) گزارش شود.
س: هر چند وقت یکبار نیاز به گزارش وضعیت در دستگاه داریم؟
پاسخ: گوگل به انتقال و وضعیت ترمینال علاقه مند است. با این حال، اگر در مدت زمان کوتاهی تغییرات حالت زیادی وجود داشته باشد (به عنوان مثال، کاربر یخچال را سه بار در یک دقیقه باز و بسته میکند یا یک دیمر را میکشد) تنها به وضعیت نهایی گزارش شده نیاز داریم.
س: آیا هنگام برقراری تماسهای وضعیت گزارش وضعیت باید ارسال شود؟
پاسخ: بهروزرسانیهای حالت جزئی پشتیبانی نمیشوند، بنابراین تماسهای Report State همیشه باید شامل همه دادههای یک ویژگی خاص باشد که بهروزرسانی شده است. اگر دو صفت ناهماهنگی ایجاد کنند، باید با هم گزارش شوند.
س: آیا Google می تواند دستگاه من را برای دریافت وضعیت (یعنی نظرسنجی از دستگاه) پرس و جو کند؟
A: این یک مکانیسم بازگشتی است که ما توصیه نمی کنیم. اگر لازم باشد به نظرسنجی مکرر از یک دستگاه برای آن کاربران بازگردیم، نمیتوانیم تضمین کنیم که بار اضافی چقدر خواهد بود. نیاز از سطوح بصری جدید ناشی می شود. علاوه بر مشکل بارگذاری ناشناخته، یک تجربه کاربری ضعیف خواهد بود. ما احساس می کنیم که Report State برای پلتفرم بسیار مهم است.
س: در حال حاضر چه ویژگی هایی از وضعیت گزارش پشتیبانی می کنند؟
A: تمام ویژگی های عمومی که دارای حالت های مرتبط هستند پشتیبانی می شوند. هر گونه تغییر در وضعیت آنلاین دستگاه نیز باید گزارش شود.
توجه داشته باشید که صحنه ها حالت ندارند. با این حال، ممکن است منجر به تغییر حالت(های) دستگاه(ها) شود. اگر هر دستگاهی در Google Home Graph دارای وضعیت تغییر است، باید دوباره گزارش شود.
س: آیا وضعیت گزارش نیاز به ارسال مهر زمانی دارد؟
پاسخ: ما به مهر زمانی نیاز نداریم. آخرین وضعیت ارسال شده، تماس های قبلی را لغو می کند.
س: اگر در حال ارسال وضعیت در Query و/یا Execute هستم، آیا باید وضعیت را جداگانه گزارش کنم؟
A: Home Graph فقط وضعیتی را ذخیره می کند که از طریق Report State ارسال می شود. حالتی که به عنوان پاسخ به مقاصد EXECUTE و QUERY برگردانده می شود فقط برای پاسخ های گفتاری به کاربر استفاده می شود و ذخیره نمی شود. در نتیجه، Report State باید فراخوانی شود، حتی اگر وضعیت جدید دستگاه قبلاً به عنوان پاسخ به یک هدف EXECUTE یا QUERY برگردانده شده باشد.
س: عدم اجرای کامل گزارش State در مهلت مقرر چه پیامدهایی دارد؟
پاسخ: این باعث کاهش تجربه کاربری می شود، به عنوان مثال در Google Home app (GHA) و سطوح بصری. به این معنی است که بسیاری از مقاصد QUERY به نظرسنجی برای وضعیت ارسال میشوند و ما نمیتوانیم تضمین کنیم که چه چیزی با بار اضافی در ابر شریک مطابقت دارد.
س: چگونه می توانم اجرای گزارش وضعیت خود را آزمایش کنم؟
A: از Home Graph Viewer استفاده کنید - یک ابزار تست سلف سرویس که وضعیت فعلی دستگاه ذخیره شده در Home Graph را به شما نشان می دهد.
س: آیا می توانیم از یک requestId تصادفی برای گزارش وضعیت استفاده کنیم؟
پاسخ: ما به شرکا توصیه می کنیم از همان requestId استفاده کنند که از درخواست EXECUTE دریافت کرده اند اگر Report State توسط درخواست EXECUTE راه اندازی شود، در غیر این صورت می توانید فقط از یک requestId تصادفی استفاده کنید.
س: اگر یک کاربر چندین دستگاه داشته باشد و یکی از آنها تغییر وضعیت دهد، آیا باید آخرین وضعیت همه دستگاه ها را گزارش کنیم؟
پاسخ: خیر. فقط باید وضعیت آن دستگاه خاص را گزارش دهید.
بهترین شیوه ها
س: چه نوع تاخیری قابل قبول است؟
پاسخ: کمتر از 200 میلی ثانیه ایده آل است، بین 2 تا 5 ثانیه خوب است. اگر تاخیر شما حدود 5 ثانیه است، با ما تماس بگیرید.
س: چگونه بلندگوی فعال شده با صدای خود را در حالت آفلاین به درستی پاسخ دهم؟
A: وضعیت آفلاین را برای دستگاه های آفلاین برگردانید. ما "در حال حاضر در دسترس نیست" را به عنوان TTS برای این خطا برگردانیم. برای اطلاعات بیشتر، خطاها و استثناها را ببینید.