التحقُّق من هوية المستخدم الثانوي

يتيح لك إجراء ثانوي لإثبات هوية المستخدم إضافة أمان بعامل ثانٍ إلى الأوامر الصوتية. ويتيح لك ذلك إضافة أمان إضافي لإجراءات معيّنة، مثل إيقاف كاميرا المراقبة أو فتح باب. لا يرتبط إجراء ثانوي لإثبات هوية المستخدم بـ سمة جهاز معيّنة، ما يسمح لك بتحديد الوقت الذي يجب فيه أن يطلب Google Assistant تحديًا. على سبيل المثال، يمكنك اختيار طلب تحدٍ لسمة OnOffلكاميرا المراقبة، ولكن لا تطلب تحديًا لسمة OnOff لمصباح. يمكنك أيضًا أن يطلب Assistant تحديات في حالات معيّنة للإجراء نفسه. على سبيل المثال، يمكنك أن تطلب من Assistant طلب تحدٍ لفتح باب إذا لم يكن مفتاح NFC بالقرب من هذا الباب، ولكن لا تطلب تحديًا إذا كان المفتاح موجودًا.

يمكن أن يطلب Assistant نوعَين من التحديات: إقرار صريح أو رقم تعريف شخصي (PIN). يضيف ذلك كتلة تحدٍ إلى QUERY وEXECUTE اللتَين يتم إرسالهما من Assistant إلى إجراءك ويقبل استجابة الخطأ challengeNeeded. Assistant بعد ذلك، يعيد "المساعد" إرسال طلب النية إلى إجراءك مع بيانات التحدي في كتلة التحدي. يمكنك بعد ذلك التحقّق من بيانات التحدي لتحديد ما إذا كان المستخدم قد قدّم استجابة الأمان الصحيحة.

يستخدم Assistant مربّع حوار لطلب التحدي، ولكن إذا كنت تستخدم Assistant على أسطح غير صوتية، يتم إدخال رقم التعريف الشخصي و التأكيدات على الشاشة.

حالات استخدام ميزة "إجراء ثانوي لإثبات هوية المستخدم"

يمكنك تفعيل إجراء ثانوي لإثبات هوية المستخدم لأي نوع جهاز أو سمة. ومع ذلك، يجب تنفيذ إجراء ثانوي لإثبات هوية المستخدم لأنواع وسمات معيّنة من الأجهزة الحسّاسة للأمان للحصول على شهادة الاعتماد.

إجراء ثانوي لإثبات هوية المستخدم باستخدام نوع التحدي pinNeeded مطلوب لمجموعات السمات وأنواع الأجهزة التالية:

  • سمة OnOff إذا كان نوع الجهاز CAMERA
  • سمة OpenClose إذا كان نوع الجهاز DOOR أو GARAGE أو GATE أو WINDOW
  • سمة LockUnlock عند فتح القفل
  • سمة ArmDisarm عند إيقاف نظام الحماية أو إلغاء إيقافه
  • سمة Reboot أو SoftwareUpdate أو NetworkControl إذا كان نوع الجهاز NETWORK أو ROUTER

نوع التحدي ackNeeded مطلوب لسمة TemperatureSetting إذا كان نوع الجهاز AC_UNIT وكان التكامل في اليابان.

أنواع التحديات المتاحة

في ما يلي أنواع التحديات المتاحة لميزة "إجراء ثانوي لإثبات هوية المستخدم":

  • بدون تحدٍ: طلب واستجابة لا يستخدمان إجراء ثانويًا لإثبات هوية المستخدم.
  • 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 بسيط

يعرض هذا المثال طلبًا واستجابة بسيطَين مع تحدي 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 هل تريد بالتأكيد ضبط التدفئة على مكيّف الهواء على 28 درجة؟

يمكنك أيضًا تضمين حالة في استجابة لكي ينفّذ 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"
      }
    }]
  }
}

رقم التعريف الشخصي غير صحيح

يعرض هذا المثال الطلب والاستجابة مع تحدي 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 : حسنًا

يمكنك الاطّلاع على القائمة الكاملة لـ لأخطاء والاستثناءات.