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

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

حملة ackneed بسيطة

يعرض هذا المثال طلبًا بسيطًا واستجابة له من خلال تحدٍّ "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 كحالة في الاستجابة.

المستخدم ضبط وضع التكييف على التدفئة
Google Assistant هل تريد فعلاً ضبط درجة حرارة التدفئة في مكيّف الهواء على 28 درجة؟
المستخدم رائع
Google Assistantnt يَتِمُّ الْآنْ ضَبْطْ حَرَارَةِ التَّدْفِئَة فِي مُكَيِّفِ الْهَوَاءْ عَلَى 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 - حسنًا

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