مرحبًا بك في "مركز مطوّري برامج Google Home"، وجهتك الجديدة لتعلّم كيفية تطوير إجراءات منزلية ذكية. ملاحظة: ستواصل إنشاء الإجراءات في وحدة تحكم الإجراءات.

التحقق الثانوي للمستخدم

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

ويتيح لك التحقق الثانوي للمستخدم إضافة أمان العامل الثاني إلى الأوامر الصوتية. يتيح لك هذا الإجراء إضافة المزيد من الأمان لإجراءات معيّنة، مثل إيقاف كاميرا المراقبة أو فتح باب. لا يرتبط التحقّق الثانوي من المستخدم بسمة معيّنة للجهاز تتيح لك تحديد وقت الحصول على Google Assistant issue a challenge. For example, you can choose to issue a challenge for the OnOff trait for a security camera, but not issue a challenge for the OnOff trait for a light. You can also have Assistant issue challenges in certain situations for the same action. For example, you can request that Assistant issue a challenge request to open a door if an NFC keyfob is not in the proximity of that door, but not issue a challenge if the keyfob is present.

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

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

أنواع الأجهزة المتوافقة

يتم دعم التحقق الثانوي للمستخدم على جميع أنواع الأجهزة.

سمات الجهاز المتوافقة

التحقق الثانوي من المستخدم متاح لجميع سمات الجهاز.

أنواع الاختبار المتاحة

في ما يلي أنواع اختبارات التحقق من المستخدم الثانوية المتاحة:

  • لا يوجد اختبار تحقق: طلب واستجابة لا يستخدمان اختبار تحقق ثانوي من المستخدم.
  • ack Needed - تحقق ثانوي من المستخدم يتطلب إقرارًا صريحًا (نعم أو لا) ويمكنه أيضًا استخدام حالات الصفات كتعليقات استجابة. لا يُنصح بهذا النوع من الاختبارات لأجهزة وسمات الأمان.
  • pin needed - تحقق ثانوي من المستخدم يتطلب رقم تعريف شخصي (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
      }
    }]
  }
}

يلزم توفر ack

مصادقة ثانوية لإقرار المستخدمين يمكنها استخدام حالات متعددة لسمة أو مصادقة إقرار بسيطة.

في ما يلي أنواع 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
          }
        }]
      }]
    }
  }]
}
الرد الثاني
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

هناك حاجة ack مع حالات الصفات

مصادقة إقرار المستخدم الثانوي التي يمكن أن تستخدم الحالات إحدى السمات. على سبيل المثال، إذا كنت تتعامل مع سمة TemperatureSetting وتم ضبط كل من thermostatMode وthermostatTemperatureSetpoint، يمكن أن يسأل Assistant هل تريد فعلاً ضبط حرارة مكيف الهواء على 28 درجة؟

يمكنك أيضًا تضمين حالة في رد لجعل Assistant يتخذ إجراءً معينًا بناءً على طلب معين.

تتوافق السمات والولايات التالية مع ackNeeded التي تشتمل على السمات. وتشير قائمة سمة معينة إلى أن جميع حالاتها معتمدة.

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

رمز 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"
      }
    }]
  }
}

الردود على الأخطاء

في ما يلي بعض رموز الخطأ التي يمكن عرضها مع ردودك:

  • challengeFailedNotSetup - يتطلب هذا الإجراء رمز أمان ولكن لم يتم إعداده في تطبيق جهازك.
  • tooManyFailedAttempts - عذرًا، أخفقت محاولات كثيرة جدًا. يُرجى الانتقال إلى تطبيق الجهاز لإكمال هذا الإجراء.
  • pinIncorrect - رمز الأمان غير صحيح.
  • userCancelled - حسنًا.

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