تأیید کاربر ثانویه

تأیید کاربر ثانویه به شما امکان می دهد امنیت عامل دوم را به دستورات صوتی اضافه کنید. این به شما امکان می دهد امنیت بیشتری را برای اقدامات خاصی مانند خاموش کردن دوربین امنیتی یا باز کردن درب اضافه کنید. راستی‌آزمایی کاربر ثانویه به یک ویژگی دستگاه خاص مرتبط نیست که به شما امکان می‌دهد تصمیم بگیرید چه زمانی باید Google Assistant به چالش بکشید. به عنوان مثال، می‌توانید برای یک دوربین امنیتی چالشی برای ویژگی OnOff صادر کنید، اما برای یک نور چالشی برای ویژگی OnOff صادر نکنید. همچنین می‌توانید در موقعیت‌های خاص برای همان اقدام، چالش‌هایی Assistant داشته باشید. برای مثال، می‌توانید از Assistant درخواست کنید در صورتی که صفحه کلید NFC در مجاورت آن در نباشد، یک درخواست چالشی برای باز کردن درب صادر کند، اما اگر صفحه کلید موجود باشد، چالشی را صادر نکند.

Assistant می تواند دو نوع چالش صادر کند - تأیید صریح یا شماره شناسایی شخصی (PIN). این یک بلوک چالش را به QUERY و اهداف EXECUTE ارسال شده از Assistant به عمل شما اضافه می کند و پاسخ خطای challengeNeeded را می پذیرد. سپس Assistant درخواست قصد را با داده‌های چالش در بلوک چالش به عمل شما برمی‌گرداند. سپس می‌توانید داده‌های چالش را تأیید کنید تا مشخص کنید آیا کاربر پاسخ امنیتی صحیحی را ارائه کرده است یا خیر.

Assistant از گفتگو برای ایجاد چالش استفاده می‌کند، اما اگر از Assistant در سطوح غیر صوتی استفاده می‌کنید، پین و تأیید روی صفحه انجام می‌شود.

انواع دستگاه های پشتیبانی شده

تأیید کاربر ثانویه در همه انواع دستگاه پشتیبانی می شود.

ویژگی های دستگاه پشتیبانی شده

تأیید کاربر ثانویه برای همه ویژگی‌های دستگاه پشتیبانی می‌شود.

انواع چالش های پشتیبانی شده

اینها انواع چالش تأیید کاربر ثانویه پشتیبانی شده هستند:

  • بدون چالش - درخواست و پاسخی که از چالش تأیید کاربر ثانویه استفاده نمی کند.
  • 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 برای کم کردن نور و تأیید برای کم کردن نور نشان می دهد.

کاربر نور اتاق نشیمن را کم کنید.
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"
    }]
  }
}

مورد نیاز با حالت های صفت

یک تأیید اعتبار کاربر ثانویه که می تواند از حالت ها برای یک ویژگی استفاده کند. برای مثال، اگر با ویژگی TemperatureSetting کار می‌کنید و هر دو thermostatMode و thermostatTemperatureSetpoint تنظیم شده‌اند، Assistant می‌تواند بپرسد آیا مطمئن هستید که می‌خواهید گرمای کولر را روی 28 درجه تنظیم کنید؟

همچنین می‌توانید وضعیتی را در پاسخ قرار دهید تا Assistant یک عمل خاص را بر اساس یک درخواست معین انجام دهد.

ویژگی ها و حالت های زیر ackNeeded با حالت های صفت پشتیبانی می کنند. فهرستی از یک ویژگی خاص نشان می دهد که همه حالت های آن پشتیبانی می شوند.

این مثال یک درخواست و پاسخ با چالش ackNeeded را نشان می‌دهد که از حالت ویژگی استفاده می‌کند. حالت کولر گازی را به گرما تغییر می دهد و دما را روی 28 درجه تنظیم می کند. سپس، Assistant از کاربران می‌خواهد تا تأیید کنند که گرما را روشن کرده و دما را روی 28 درجه تنظیم کنند، زیرا یک thermostatTemperatureSetpoint 28 به عنوان حالت در پاسخ برگردانده می‌شود.

کاربر حالت AC را روی گرما تنظیم کنید.
Google Assistant آیا مطمئن هستید که می خواهید حرارت کولر را روی 28 درجه تنظیم کنید؟
کاربر آره.
Google Assistant nt حرارت کولر گازی را روی 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 برمی‌گرداند، بنابراین 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"
      }
    }]
  }
}

پین نادرست است

این مثال درخواست و پاسخ را با چالش 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"
      }
    }]
  }
}

پاسخ های خطا

اینها برخی از کدهای خطا هستند که می توانند با پاسخ های شما برگردانده شوند:

  • challengeFailedNotSetup - این عمل به کد امنیتی نیاز دارد اما در برنامه دستگاه شما تنظیم نشده است.
  • tooManyFailedAttempts - متأسفیم، تلاش های ناموفق بسیار زیاد است. لطفاً برای تکمیل آن اقدام به برنامه دستگاه خود بروید.
  • pinIncorrect - با عرض پوزش، کد امنیتی نادرست است.
  • userCancelled - بسیار خوب.

لیست کامل خطاها و استثناها را ببینید.