אימות משתמש משני מאפשר להוסיף אבטחה של גורם שני לפקודות הקוליות. כך אפשר להוסיף אבטחה נוספת לפעולות מסוימות, כמו השבתת מצלמת אבטחה או פתיחת דלת. אימות משתמש משני לא קשור למאפיין ספציפי של המכשיר, כך שתוכלו להחליט מתי Google Assistant יציג את האתגר. לדוגמה, אפשר לבחור להציג אתגר למאפיין OnOff למצלמת אבטחה, אבל לא להציג אתגר למאפיין OnOff לנורה. אתם יכולים גם לשלוח ל-Assistant אתגרים בנושא אותה פעולה במצבים מסוימים. לדוגמה, אפשר לבקש מ-Assistant להנפיק בקשת אתגר לפתיחת דלת אם מפתח NFC לא נמצא בסביבת הדלת, אבל לא להנפיק אתגר אם המפתח נמצא בסביבה.
ה-Assistant יכול להנפיק שני סוגים של אתגרים – אישור מפורש או מספר זיהוי אישי (PIN). כך מוסיפים בלוק שלגרום לאתגר לכוונות QUERY
ו-EXECUTE
שנשלחות מ-Assistant חזרה לפעולה, ומקבלים תגובת שגיאה מסוג challengeNeeded
. לאחר מכן, Assistant שולח חזרה את בקשת הכוונה לפעולה שלכם, עם נתוני האתגר בבלוק האתגר. לאחר מכן תוכלו לאמת את נתוני האתגר כדי לקבוע אם המשתמש סיפק את תגובת האבטחה הנכונה.
Assistant משתמש בתיבה דו-שיח כדי להציג את האתגר, אבל אם משתמשים ב-Assistant במכשירים ללא יכולת דיבור, קוד האימות והאישורים מוצגים במסך.
סוגי מכשירים נתמכים
יש תמיכה באימות משתמש משני בכל סוגי המכשירים.
סוגי traits נתמכים במכשירים
אימות משתמש משני נתמך בכל מאפייני המכשיר.
סוגי האתגרים הנתמכים
אלה סוגי האתגרים הנתמכים באימות משתמש משני:
- No challenge – בקשה ותגובה שלא כוללות אתגר אימות משתמשים משני.
- ackNeeded – אימות משתמש משני שדורש אישור מפורש (כן או לא), ואפשר גם להשתמש במצבי המאפיינים כמשוב על התגובה. לא מומלץ להשתמש בסוג האתגר הזה במכשירי אבטחה ובמאפייני אבטחה.
- pinNeeded – אימות משתמש משני שדורש מספר זיהוי אישי (PIN), ומתאים למכשירי אבטחה ולמאפייני אבטחה.
אין אתגר
בדוגמה הזו מוצגות בקשה ותגובה של EXECUTE
שהסתיימו בהצלחה, ללא קריאה לאימות כדי להדליק את התאורה.
משתמש | מדליק את האורות. |
Google Assistant | בסדר, מדליק 3 אורות. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.OnOff", "params": { "on": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS", "states": { "on": true, "online": true } }] } }
ackNeeded
אימות אישור משני של משתמש, שיכול להשתמש במספר מצבים למאפיין או באימות אישור פשוט.
יש את סוגי האתגרים הבאים של ackNeeded
:
ackNeeded simple
בדוגמה הזו מוצגות בקשה ותגובה פשוטות עם אתגר ackNeeded
כדי להפחית את הבהירות של תאורה ואישור להפחתת הבהירות.
משתמש | Dim the living room light. |
Google Assistant | הארת התאורה בסלון. להמשיך? |
משתמש | כן. |
Google Assistant | הארת התאורה בסלון. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.BrightnessAbsolute", "params": { "brightness": 12 } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.BrightnessAbsolute", "params": { "brightness": 12 }, "challenge": { "ack": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS" }] } }
ackNeeded עם מצבי מאפיינים
אימות אישור משני של משתמש שיכול להשתמש במצבים למאפיין.
לדוגמה, אם אתם עובדים עם המאפיין TemperatureSetting וגם thermostatMode
וגם thermostatTemperatureSetpoint
מוגדרים, Assistant יכול לשאול האם ברצונך להגדיר את הטמפרטורה במזגן ל-28 מעלות?
אפשר גם לכלול מצב בתגובה כדי לגרום ל-Assistant לבצע פעולה ספציפית על סמך בקשה נתונה.
המאפיינים והמצבים הבאים תומכים ב-ackNeeded
עם מצבי מאפיינים. אם תכונה ספציפית מופיעה ברשימה, סימן שכל המצבים שלה נתמכים.
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
בדוגמה הזו מוצגות בקשה ותגובה עם אתגר ackNeeded
שמשתמש במצב של מאפיין. המצב של המזגן ישתנה לחימום והטמפרטורה תוגדר ל-28 מעלות. לאחר מכן, Assistant מבקש מהמשתמשים לאשר את הפעלת החימום והגדרת הטמפרטורה ל-28 מעלות, כי thermostatTemperatureSetpoint
של 28
מוחזר כסטטוס בתגובה.
משתמש | מגדירים את מצב המיזוג לחימום. |
Google Assistant | בטוח שברצונך להגדיר את הטמפרטורה של המזגן ל-28 מעלות? |
משתמש | כן. |
Google Assistant | הגדרת החימום במזגן ל-28 מעלות. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.TemperatureSetting", "params": { "thermostatMode": "heat" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "states": { "thermostatMode": "heat", "thermostatTemperatureSetpoint": 28 }, "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.TemperatureSetting", "params": { "thermostatMode": "heat" }, "challenge": { "ack": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS", "states": { "thermostatMode": "heat", "thermostatTemperatureSetpoint": 28 } }] } }
pinNeeded
מומלץ להשתמש באתגר pinNeeded
במכשירי אבטחה.
בדוגמה הזו מוצגות בקשה ראשונית ותגובה עם אתגר pinNeeded
. בדוגמה הזו מוחזרת תשובה עם אתגר pinNeeded
, ולכן Assistant מבקש את הסיכה. בשלב הזה, המשתמש יכול לספק קוד גישה שגוי או תקין.
בקשה ותגובה לדוגמה עבור קוד אימות שגוי או תקין:
משתמש | פותחים את הדלת. |
Google Assistant | מה קוד האבטחה שלך? |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.LockUnlock", "params": { "lock": false } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "pinNeeded" } }] } }
PIN שגוי
בדוגמה הזו מוצגות הבקשה והתגובה עם אתגר challengeFailedPinNeeded
. צריך להשתמש באתגר הזה אחרי שאתגר pinNeeded
ראשוני נכשל.
כשהמערכת מחזירה את הטיפוס challengeFailedPinNeeded
, Assistant מבקשת שוב את קוד האבטחה. אם המשתמש מבצע יותר מדי ניסיונות כושלים, אפשר להחזיר תגובת שגיאה מסוג tooManyFailedAttempts
. תגובות שגיאה
משתמש | 333222 |
Google Assistant | מצטערים, קוד האבטחה שגוי. מה קוד האבטחה שלך? |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.LockUnlock", "params": { "lock": false }, "challenge": { "pin": "333222" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "challengeFailedPinNeeded" } }] } }
קוד אימות תקין
בדוגמה הזו מוצגות הבקשה והתגובה של מספר PIN תקין.
משתמש | 333444 |
Google Assistant | ביטול הנעילה של הדלת. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.LockUnlock", "params": { "lock": false }, "challenge": { "pin": "333444" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS", "states": { "isLocked": false, "isJammed": false } }] } }
משתמש | Dim the living room light. |
Google Assistant | מה קוד האבטחה שלך? |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.BrightnessAbsolute", "params": { "brightness": 12 } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "pinNeeded" } }] } }
תגובות שגיאה
אלה כמה קודי שגיאה שיכולים להופיע בתשובות שלכם:
- tooManyFailedAttempts – Sorry, too many failed attempts. עליך לעבור לאפליקציה במכשיר כדי להשלים את הפעולה הזו.
- pinIncorrect – מצטערים, קוד האבטחה שגוי.
- userCancelled – אישור