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

تتيح لك ميزة "إجراء ثانوي لإثبات هوية المستخدم" إضافة عامل أمان ثانٍ إلى الأوامر الصوتية. يتيح لك ذلك إضافة مستوى أمان إضافي لإجراءات معيّنة، مثل إيقاف كاميرا المراقبة أو فتح باب. لا يرتبط إجراء ثانوي لإثبات هوية المستخدم بسمة جهاز معيّنة، ما يتيح لك تحديد الوقت الذي تريد أن تطرح فيه 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 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 هل أنت متأكد من أنّك تريد ضبط درجة حرارة مكيف الهواء على 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"
      }
    }]
  }
}

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

يعرض هذا المثال طلبًا وردًا لرمز 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
      }
    }]
  }
}
المستخدم أريد تخفيت الإضاءة في غرفة المعيشة.
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 - حسنًا

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