İkincil Kullanıcı Doğrulaması

İkincil kullanıcı doğrulaması, sesli komutlara ikinci faktör güvenliği eklemenize olanak tanır. Bu sayede, güvenlik kamerasını kapatma veya kapı açma gibi belirli işlemler için ek güvenlik ekleyebilirsiniz. İkincil kullanıcı doğrulaması belirli bir cihaz özelliğine bağlı değildir. Bu sayede, Google Assistant uygulamasının ne zaman sorgulama yapacağına siz karar verebilirsiniz. Örneğin, bir güvenlik kamerası için OnOff özelliğine yönelik bir sorgulama yayınlamayı seçebilir ancak bir ışık için OnOff özelliğine yönelik bir sorgulama yayınlamayabilirsiniz. Ayrıca, aynı işlem için belirli durumlarda Assistant doğrulama isteğinde bulunabilirsiniz. Örneğin, NFC anahtarlığı kapının yakınında değilse Assistant uygulamasının kapıyı açmak için bir sorgulama isteği göndermesini, anahtarlık mevcutsa sorgulama göndermemesini isteyebilirsiniz.

Assistant, iki tür doğrulama isteği gönderebilir: açık onay veya kişisel kimlik numarası (PIN). Bu, Assistant tarafından işleminize geri gönderilen QUERY ve EXECUTE intent'lerine bir sorgulama bloğu ekler ve challengeNeeded hata yanıtını kabul eder. Assistant, daha sonra intent isteğini, challenge bloğundaki challenge verileriyle birlikte işleminize geri gönderir. Ardından, kullanıcının doğru güvenlik yanıtını verip vermediğini belirlemek için güvenlik sorgulaması verilerini doğrulayabilirsiniz.

Assistant, sorgulamayı başlatmak için iletişim kutusunu kullanır ancak Assistant'ı sesli olmayan platformlarda kullanırsanız PIN ve onaylar ekranda yapılır.

İkincil kullanıcı doğrulaması ne zaman kullanılır?

İkincil kullanıcı doğrulamasını herhangi bir cihaz türü veya özelliği için etkinleştirebilirsiniz. Ancak entegrasyonunuzun sertifikalandırılması için güvenlikle ilgili hassas belirli cihaz türleri ve özellikleri için ikincil kullanıcı doğrulaması uygulamanız gerekir.

Aşağıdaki özellik ve cihaz türü kombinasyonları için pinNeeded sorgulama türü kullanılarak ikincil kullanıcı doğrulaması yapılması gerekir:

  • Cihaz türü CAMERA ise OnOff özelliği.
  • Cihaz türü DOOR, GARAGE, GATE veya WINDOW ise OpenClose özelliği.
  • Kilit açılırken LockUnlock özelliği.
  • Devre dışı bırakma veya devre dışı bırakma işlemini iptal etme sırasında ArmDisarm özelliği.
  • Cihaz türü NETWORK veya ROUTER ise Reboot, SoftwareUpdate veya NetworkControl özelliği.

Cihaz türü AC_UNIT ise ve entegrasyon Japonya'da bulunuyorsa TemperatureSetting özelliği için ackNeeded güvenlik onayı türü gereklidir.

Desteklenen sınama türleri

Desteklenen ikincil kullanıcı doğrulama sorgulama türleri şunlardır:

  • Doğrulama yok: İkincil kullanıcı doğrulaması kullanmayan bir istek ve yanıt.
  • ackNeeded: Açık onay (evet veya hayır) gerektiren ve yanıt geri bildirimi olarak özellik durumlarını da kullanabilen ikincil kullanıcı doğrulaması. Bu doğrulama türü, güvenlik cihazları ve özellikleri için önerilmez.
  • pinNeeded: Kişisel kimlik numarası (PIN) gerektiren ikincil kullanıcı doğrulaması. Güvenlik cihazları ve özellikleri için idealdir.

Doğrulama yok

Bu örnekte, ışıkları açmak için sorgulama içermeyen başarılı bir EXECUTE isteği ve yanıtı gösterilmektedir.

Kullanıcı Işıkları aç.
Google Assistant Tamam, 3 ışık açılıyor.
İstek
{
  "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
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Bir özellik için birden fazla durum kullanabilen ikincil kullanıcı onayı kimlik doğrulaması veya basit onay kimlik doğrulaması.

Aşağıdaki ackNeeded doğrulama türleri vardır:

ackNeeded simple

Bu örnekte, bir ışığı kısmak için ackNeeded sorgulaması ve ışığı kısma onayı içeren basit bir istek ve yanıt gösterilmektedir.

Kullanıcı Oturma odasının ışığını kıs.
Google Assistant Salonun ışığı kısılıyor. Emin misiniz?
Kullanıcı Evet.
Google Assistant Salonun ışığı kısılıyor.
1. istek
{
  "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. yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
2. istek
{
  "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. yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

Özellik durumlarıyla ackNeeded

Bir özelliğin durumlarını kullanabilen ikincil kullanıcı onayı kimlik doğrulaması. Örneğin, TemperatureSetting özelliğiyle çalışıyorsanız ve hem thermostatMode hem de thermostatTemperatureSetpoint ayarlanmışsa Assistant, Klimanın sıcaklığını 28 dereceye ayarlamak istediğinizden emin misiniz? diye sorabilir.

Assistant uygulamasının belirli bir isteğe göre belirli bir işlem yapması için yanıta bir durum da ekleyebilirsiniz.

Aşağıdaki özellikler ve durumlar, özellik durumlarıyla ackNeeded özelliğini destekler. Belirli bir özelliğin listelenmesi, tüm durumlarının desteklendiğini gösterir.

  • ArmDisarm
    • Cihazı etkinleştirmek veya etkinleştirmeyi iptal etmek için ackNeeded sorgulama türünü kullanın. Ancak devre dışı bırakma ve devre dışı bırakmayı iptal etme işlevleri için pinNeeded sorgulama türü gerekir.
  • Fill
  • LockUnlock
    • Cihazı kilitlemek için ackNeeded sorgulama türünü, kilidini açmak için pinNeeded sorgulama türünü kullanın.
  • OnOff
    • on
    • Bu özellik için ackNeeded yarışma türünü kullanın. Bu özellik CAMERA cihazlarla kullanıldığında pinNeeded sorgulama türü gereklidir.
  • OpenClose
    • Bu özellik için ackNeeded yarışma türünü kullanın. Bu özellik DOOR, GARAGE, GATE veya WINDOW cihazlarla kullanıldığında pinNeeded sorgulama türü gereklidir.
  • Scene
  • TemperatureSetting
    • thermostatMode
    • thermostatTemperatureSetpoint
    • thermostatTemperatureSetpointHigh
    • thermostatTemperatureSetpointLow

Bu örnekte, özellik durumunu kullanan bir ackNeeded sorgulaması içeren istek ve yanıt gösterilmektedir. Klimanın modunu ısıtma olarak değiştirir ve sıcaklığı 28 dereceye ayarlar. Ardından Assistant, yanıtta durum olarak 28 değerinde bir thermostatTemperatureSetpoint döndürüldüğü için kullanıcılardan ısıtmayı açıp sıcaklığı 28 dereceye ayarlamak için onay ister.

Kullanıcı AC modunu ısıtmaya ayarla.
Google Assistant Klimanın sıcaklığını 28 dereceye ayarlamak istediğinizden emin misiniz?
Kullanıcı Evet.
Google Assistant Klimanın sıcaklığını 28 dereceye ayarlıyorum.
1. istek
{
  "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. yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
2. istek
{
  "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. yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

Güvenlik cihazları için pinNeeded doğrulaması önerilir.

Bu örnekte, pinNeeded sorgulaması içeren ilk istek ve yanıt gösterilmektedir. Örnekte, pinNeeded sorgulaması içeren bir yanıt döndürülür. Bu nedenle Assistant, PIN'i ister. Bu noktada kullanıcı, yanlış veya geçerli bir PIN girebilir.

Yanlış veya geçerli bir PIN için örnek istek ve yanıt:

Kullanıcı Kapının kilidini açın.
Google Assistant Güvenlik kodunuzu öğrenebilir miyim?
İstek
{
  "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
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Yanlış PIN

Bu örnekte, challengeFailedPinNeeded sorgulaması içeren istek ve yanıt gösterilmektedir. Bu doğrulama, ilk pinNeeded doğrulama başarısız olduktan sonra kullanılmalıdır.

challengeFailedPinNeeded türü döndürüldüğünde Assistant güvenlik kodunu tekrar ister. Kullanıcı çok fazla başarısız deneme yaparsa tooManyFailedAttempts hata yanıtı döndürebilirsiniz. Hata yanıtları bölümüne bakın.

Kullanıcı 333222
Google Assistant Maalesef güvenlik kodu yanlış. Güvenlik kodunuzu alabilir miyim?
İstek
{
  "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"
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "challengeFailedPinNeeded"
      }
    }]
  }
}

Geçerli PIN

Bu örnekte, geçerli bir PIN'in isteği ve yanıtı gösterilmektedir.

Kullanıcı 333444
Google Assistant Kapının kilidi açılıyor.
İstek
{
  "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"
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
Kullanıcı Oturma odasının ışığını kıs.
Google Assistant Güvenlik kodunuzu öğrenebilir miyim?
İstek
{
  "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
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Hata yanıtları

Yanıtlarınızla birlikte döndürülebilecek bazı hata kodları şunlardır:

  • tooManyFailedAttempts - Maalesef çok fazla başarısız deneme yapıldı. Bu işlemi tamamlamak için lütfen cihazınızın uygulamasına gidin.
  • pinIncorrect - Maalesef güvenlik kodu yanlış.
  • userCancelled - Ok

Hatalar ve istisnalar listesinin tamamını inceleyin.