כללי
ש: איפה ובאיזו שפה כדאי להטמיע את התשתית שלנו למילוי הזמנות בענן לענן?
תשובה: כל עוד יש תמיכה ב-SSL (TLS) וב-OAuth 2.0, אפשר להטמיע את התשתית בכל פלטפורמה ובכל שפה שתרצו. מומלץ לפרוס את השירות קרוב ככל האפשר לשאר התשתית, כדי לשפר את האמינות ולצמצם את זמן האחזור לביצוע במכשירי המשתמשים בפועל.
ש: האם מזהי המכשירים צריכים להיות ייחודיים?
תשובה: המזהים צריכים להיות ייחודיים. אם אין לכם מזהים ייחודיים בשירות, הם צריכים להיות ייחודיים לפחות ברמת המשתמש. נניח שיש משתמש עם כמה בתים, ושיש שילובים של שני הבתים עם אותו משתמש. בקשה להדליק נורית בבית אחד לא אמורה להדליק נורית עם אותו מזהה בבית אחר.
שאלה: האם שמות המכשירים צריכים להיות ייחודיים?
תשובה: השמות לא חייבים להיות ייחודיים, אבל עם הזמן יכול להיות שנעודד אנשים לשפר שמות לא טובים אחרי ההגדרה כדי לשפר את חוויית המשתמש.
הנה מדריך קצר למתן שמות:
- השמות צריכים להיות דברים שאנשים יכולים לומר בפועל.
- אנחנו מזהים קבוצות משנה של מחרוזות, כך שאם תכתבו 'acme color light', נתייחס גם ל-'acme light'.
- מומלץ לתת למוצר שם תיאורי וגם שם אחד או יותר שהמשתמשים מגדירים.
- המשתמשים לא צריכים לתת לשמות של הנורות שמות של חדרים, כי יש לנו חדרים לזה. צריך לתת לכל נורה שם ייחודי, אבל תמיד אפשר להשתמש בלשון רבים כדי להפעיל את כולן (לדוגמה, שתי הנורות במנורות הקיר במשרד הן 'נורה צפונית' ו'נורה מזרחית', אבל אפשר להפעיל אותן גם באמצעות 'נורות').
שאלה: באיזו תדירות מתעדכן סטטוס המכשיר?
תשובה: המצב הזמני מאוחזר בפעולות QUERY או EXECUTE, שהן פעולות שמשתמשים מפעילים. אם המשתמש שואל "האם הנורה דולקת?" או רוצה להאיר את הנורה, נצטרך להריץ שאילתת נתונים כדי לברר מה המצב הנוכחי.
שאלה: האם אפשר לעדכן את 'תרשים הבית' ישירות במצב הנוכחי של מכשיר?
תשובה: כן, צריך להשתמש בקריאת ה-API Report State.
קישור חשבונות ו-OAuth
שאלה: האם צריך לקשר חשבונות?
תשובה: כן, קישור החשבון נדרש כדי לחבר את המכשירים של המשתמש לשירותי הענן של הספק.
שאלה: ב-OAuth, אנחנו מבטלים את התוקף של אסימוני הגישה כל 15.213 שעות. זה בסדר?
תשובה: כן, אבל צריך לבדוק עם זמן תפוגה קצר יחסית, למשל 10-20 דקות. לקוח ה-OAuth שלנו אמור לרענן את האסימונים לפי הצורך, ובדיקה עם זמן תפוגה קצר תבדוק אם זה עובד.
כוונות
ש: מתי מתבצע הסנכרון?
תשובה: הסנכרון מתבצע מיד אחרי השלמת OAuth, ואחרי קריאה ל-Request Sync.
ש: למה SYNC
לא פועל?
תשובה: יש כמה סיבות נפוצות לכך שהפעולה הזו נכשלת.
אתם שולחים סוגי מכשירים שגויים.
- לדוגמה, אנחנו מצפים ל-
action.devices.types.LIGHT
, אבל אתם שולחים את הערךaction.devices.types.Light
.
- לדוגמה, אנחנו מצפים ל-
אתם שולחים נתונים על סוגי מכשירים שלא נתמכים.
- לדוגמה, אתם שולחים את הערך
action.devices.types.FLASHLIGHT
– אנחנו לא תומכים בכך.
- לדוגמה, אתם שולחים את הערך
אתם שולחים שדות לא חוקיים או לא נתמכים.
- לדוגמה, יש לכם שדה שלא מופיע במפרט שלנו.
יש בעיה אחרת בפורמט של התגובה מ-SYNC.
- בודקים את סוגרי הסוגריים!
נתקלת בבעיה בקישור החשבון.
- עליך לוודא שמתקבל טוקן גישה תקין בכותרת האימות של בקשת ה-SYNC.
חלף זמן רב מדי מאז שליחת בקשת ה-SYNC ועד לקבלת התגובה.
- עליך לאשר את תשובתך לבקשת הסנכרון תוך 5 שניות.
ש: האם אפשר לשלוח תשובה עם סטטוס 'בהמתנה'?
תשובה: אם המכשירים זמינים בזמן אמת, אנחנו מעדיפים לקבל תשובה של 'הצלחה' או 'כישלון', ולא 'בהמתנה'. אם לדעתך דרושה לך תשובה 'בהמתנה', אפשר לפנות אלינו. אנחנו מבינים שלמכשירים מסוימים עם צריכת אנרגיה נמוכה ולא בזמן אמת עשויה להיות צורך בתשובה בהמתנה ובמודל ביצוע אסינכרוני.
בדיקה ושליחה
שאלה: האם אפשר להגדיר סביבת פיתוח בענן?
תשובה: כן, אפשר לבדוק סביבה והגדרות של ענן שלא הושקו.
שאלה: הפעולה שלי לא מוצגת בקטע 'בקרת הבית' באפליקציית Google Home. מה קורה?
תשובה: מוודאים שיש לכם הרשאת פיתוח בפרויקט הזה.
מצב הדוח
שאלה: האם יש תנאים מוקדמים להטמעת Report State?
תשובה: הפרויקט צריך להשתמש ב-Smart Home API, לתמוך ב-OAuth2 ולכלול מאפיינים שיש להם מצבים שאפשר לדווח עליהם.
שאלה: באיזו תדירות צריך לדווח על המצב במכשיר?
תשובה: Google מתעניינת במעבר ובמצב הקצה. עם זאת, אם יש הרבה שינויים במצב תוך פרק זמן קצר (לדוגמה, משתמש פותח וסוגר את המקרר שלוש פעמים בדקה או מחליק את המתג של המנורה), אנחנו צריכים לדווח רק על המצב הסופי.
שאלה: האם צריך לשלוח את מצב המכשיר המלא כשמבצעים קריאות לדיווח על מצב?
תשובה: לא ניתן לעדכן מצב באופן חלקי, ולכן קריאות Report State תמיד צריכות לכלול את כל הנתונים של מאפיין מסוים שעודכן. אם שני מאפיינים ייצרו אי-עקביות, צריך לדווח עליהם יחד.
שאלה: האם Google יכולה לשלוח שאילתה למכשיר כדי לקבל את המצב שלו (כלומר, לבצע סקרים במכשיר)?
תשובה: זהו מנגנון חלופי שאנחנו לא ממליצים להשתמש בו. אם נצטרך לחזור לבדיקת המכשיר בתדירות גבוהה עבור המשתמשים האלה, לא נוכל להבטיח מה יהיה העומס הנוסף. הצורך הזה נובע מהפלטפורמות החזותית החדשות. בנוסף לבעיה הלא ידועה בטעינה, חוויית המשתמש תהיה ירודה. אנחנו סבורים ש-Report State חיוני לפלטפורמה.
ש: אילו מאפיינים תומכים כרגע בסטטוס הדוח?
תשובה: יש תמיכה בכל המאפיינים הציבוריים שיש להם מצבים משויכים. צריך לדווח גם על כל שינוי במצב המכשיר באינטרנט.
חשוב לדעת שלסצנות אין מצבים. עם זאת, הן עשויות לגרום לשינוי במצבים של המכשירים. אם יש שינוי במצב של מכשיר כלשהו ב-Google Home Graph, צריך לדווח על כך.
שאלה: האם צריך לשלוח חותמת זמן בסטטוס הדוח?
תשובה: אין צורך בחותמת זמן. המצב האחרון שנשלח יחליף את הקריאות הקודמות.
שאלה: האם צריך לדווח על המצב בנפרד אם כבר שולחים את המצב בשאילתה ו/או בביצוע?
תשובה: Home Graph מאחסן רק את המצב שנשלח דרך Report State. המצב שמוחזר בתגובה לכוונות EXECUTE ו-QUERY משמש רק לתשובות דיבור למשתמש, והוא לא מאוחסן. כתוצאה מכך, צריך להפעיל את Report State גם אם המצב החדש של המכשיר כבר הוחזר בתגובה לכוונה מסוג EXECUTE או QUERY.
ש: מה יהיו ההשלכות אם לא יטמיעו את סטטוס הדוח במלואו עד לתאריך היעד?
תשובה: הפעולה הזו תוביל לירידה בחוויית המשתמש, למשל בGoogle Home app (GHA) ובממשקים החזותיים. המשמעות היא שיהיו הרבה כוונות QUERY שיישלחו כדי לבדוק את המצב, ולא נוכל להבטיח איך זה יתאים לעומס נוסף בענן של השותף.
ש: איך אפשר לבדוק את ההטמעה של סטטוס הדוח?
תשובה: משתמשים בצפייה בתרשים הבית – כלי בדיקה בשירות עצמי שמוצגים בו מצבי המכשיר הנוכחיים ששמורים ב-Home Graph.
שאלה: האם אפשר להשתמש ב-requestId אקראי עבור Report State?
תשובה: אם ה-Report State מופעל על ידי בקשת ה-EXECUTE, מומלץ לשותפים להשתמש באותו requestId שהם קיבלו מבקשת ה-EXECUTE. אחרת, אפשר פשוט להשתמש ב-requestId אקראי.
שאלה: אם למשתמש יש כמה מכשירים ואחד מהם השתנה, האם אנחנו צריכים לדווח על המצב האחרון של כל המכשירים?
תשובה: לא. צריך לדווח רק על המצב של המכשיר הספציפי הזה.
שיטות מומלצות
ש: מהו זמן האחזור המקובל?
תשובה: פחות מ-200 אלפיות השנייה היא זמן אידיאלי, 2-5 שניות הן זמן סביר. אם זמן האחזור שלכם הוא בסביבות 5 שניות, צרו איתנו קשר.
שאלה: איך אפשר לגרום לרמקול המופעל באמצעות קול להגיב בצורה תקינה כשהוא במצב אופליין?
תשובה: מחזירים את המצב אופליין למכשירים במצב אופליין. אנחנו מחזירים את הטקסט 'not available right now' כ-TTS עבור השגיאה הזו. מידע נוסף זמין במאמר שגיאות וחריגים.