אימות משתמש משני

אימות משתמש נוסף (SUV) מאפשר לכם להוסיף שכבת אבטחה שנייה לפקודות קוליות. כך תוכלו להוסיף שכבת אבטחה לפעולות מסוימות, כמו כיבוי של מצלמת אבטחה או פתיחת דלת. אימות משתמש נוסף (SUV) לא קשור לתכונה ספציפית של המכשיר, כך שאתם יכולים להחליט מתי Google Assistant יציג אתגר. לדוגמה, אתם יכולים לבחור להציג אתגר לתכונה OnOff של מצלמת אבטחה, אבל לא להציג אתגר לתכונה OnOff של נורה. במצבים מסוימים, Assistant יכול גם להציג אתגרים לאותה פעולה. לדוגמה, אתם יכולים לבקש ש-Assistant ישלח בקשת אתגר לפתיחת דלת אם שלט NFC לא נמצא בקרבת הדלת, אבל לא לשלוח אתגר אם השלט נמצא.

Assistant יכול להנפיק שני סוגים של אתגרים – אישור מפורש או מספר זיהוי אישי (PIN). הפעולה הזו מוסיפה בלוק אימות ל-intent מסוג QUERY ו-EXECUTE שנשלח מ-Assistant חזרה לפעולה, ומקבלת תגובת שגיאה מסוג challengeNeeded. ‫Assistant שולח בחזרה את בקשת ה-Intent לפעולה שלכם עם נתוני האתגר בבלוק האתגר. לאחר מכן תוכלו לאמת את נתוני האתגר כדי לקבוע אם המשתמש נתן את התשובה הנכונה לשאלת האבטחה.

‫Assistant משתמש בתיבת דו-שיח כדי להציג את האתגר, אבל אם משתמשים ב-Assistant בפלטפורמות לא קוליות, קוד האימות והאישורים מוצגים במסך.

מתי כדאי להשתמש באימות משתמש נוסף (SUV)

אתם יכולים להפעיל אימות משתמש נוסף (SUV) לכל סוג מכשיר או תכונה. עם זאת, כדי שהשילוב יאושר, אתם צריכים להטמיע אימות משתמש נוסף (SUV) לסוגי מכשירים ולתכונות מסוימים שרגישים מבחינת אבטחה.

נדרש אימות משתמש נוסף (SUV) באמצעות סוג האתגר pinNeeded בשילובים הבאים של תכונות וסוגי מכשירים:

  • התכונה OnOff אם סוג המכשיר הוא CAMERA.
  • התכונה OpenClose אם סוג המכשיר הוא DOOR,‏ GARAGE,‏ GATE או WINDOW.
  • התכונה LockUnlock כשמבטלים את הנעילה.
  • התכונה ArmDisarm כשמבטלים את הנעילה או מבטלים את ביטול הנעילה.
  • התכונה Reboot,‏ SoftwareUpdate או NetworkControl אם סוג המכשיר הוא NETWORK או ROUTER.

חובה להשתמש בסוג האתגר ackNeeded עבור המאפיין TemperatureSetting אם סוג המכשיר הוא AC_UNIT והשילוב נמצא ביפן.

סוגי האתגרים הנתמכים

אלה סוגי האתגרים הנתמכים של אימות משתמש נוסף:

  • ללא אימות – בקשה ותגובה שלא משתמשות באימות משתמש נוסף (SUV).
  • ‫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 לעמעום אור ואישור לעמעום האור.

משתמש תעמעם את האור בסלון.
Google Assistant מעמעם את האור בסלון. להמשיך?
משתמש כן.
Google Assistant מעמעם את האור בסלון.
בקשה 1
{
  "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
          }
        }]
      }]
    }
  }]
}
תשובה 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
בקשה 2
{
  "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
          }
        }]
      }]
    }
  }]
}
תשובה 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

ackNeeded עם מצבי תכונות

אימות משני של אישור המשתמש, שיכול להשתמש במצבים של תכונה. לדוגמה, אם אתם עובדים עם המאפיין TemperatureSetting וגם thermostatMode וגם thermostatTemperatureSetpoint מוגדרים, Assistant יכול לשאול Are you sure you want to set the heat on the air conditioner to 28 degrees?‎

אפשר גם לכלול מצב בתשובה כדי ש-Assistant יבצע פעולה ספציפית על סמך בקשה נתונה.

התכונות והמצבים הבאים תומכים ב-ackNeeded עם מצבי תכונות. אם תכונה מסוימת מופיעה ברשימה, סימן שכל המצבים שלה נתמכים.

  • ArmDisarm
    • כדי להפעיל או לבטל את ההפעלה של המכשיר, צריך להשתמש בסוג האתגר ackNeeded. כדי להשבית או לבטל את ההשבתה של המכשיר, צריך להשתמש בסוג האתגר pinNeeded.
  • Fill
  • LockUnlock
    • צריך להשתמש בסוג האתגר ackNeeded כדי לנעול את המכשיר ובסוג האתגר pinNeeded כדי לבטל את הנעילה.
  • OnOff
    • on
    • צריך להשתמש בסוג האתגר ackNeeded למאפיין הזה. סוג האתגר pinNeeded נדרש כשמשתמשים בתכונה הזו במכשירי CAMERA.
  • OpenClose
    • צריך להשתמש בסוג האתגר ackNeeded למאפיין הזה. סוג האתגר pinNeeded נדרש כשמשתמשים בתכונה הזו במכשירים מסוג DOOR, ‏ GARAGE,‏ GATE או WINDOW.
  • Scene
  • TemperatureSetting
    • thermostatMode
    • thermostatTemperatureSetpoint
    • thermostatTemperatureSetpointHigh
    • thermostatTemperatureSetpointLow

בדוגמה הזו מוצגות בקשה ותגובה עם אתגר ackNeeded שמשתמש במצב מאפיין. הוא משנה את מצב המזגן לחימום ומגדיר את הטמפרטורה ל-28 מעלות. לאחר מכן, Assistant מבקש מהמשתמשים לאשר את הפעלת החימום והגדרת הטמפרטורה ל-28 מעלות, כי thermostatTemperatureSetpoint של 28 מוחזר כמצב בתשובה.

משתמש הגדר את מצב המזגן לחימום.
Google Assistant בחרת להגדיר את החימום במזגן ל-28 מעלות. להמשיך?
משתמש כן.
Google Assistant הגדרת החימום במזגן ל-28 מעלות.
בקשה 1
{
  "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"
          }
        }]
      }]
    }
  }]
}
תשובה 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
בקשה 2
{
  "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
          }
        }]
      }]
    }
  }]
}
תשובה 2
{
  "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"
      }
    }]
  }
}

קוד אימות תקין

בדוגמה הזו מוצגות הבקשה והתגובה של קוד אימות תקין.

משתמש 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
      }
    }]
  }
}
משתמש תעמעם את האור בסלון.
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 – מצטערים, היו יותר מדי ניסיונות כושלים. כדי לבצע את הפעולה הזו, צריך לעבור לאפליקציה במכשיר.
  • pinIncorrect – מצטערים, קוד האבטחה שגוי.
  • userCancelled – אישור

לרשימה המלאה של השגיאות והחריגות