İkincil Kullanıcı Doğrulaması

İkincil kullanıcı doğrulaması, sesli komutlara ikinci faktör güvenlik 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'ün ne zaman istem göndereceğine karar verebilirsiniz. Örneğin, güvenlik kamerası için OnOff özelliğiyle ilgili bir meydan okuma göndermeyi seçebilir ancak OnOff özelliğiyle ilgili bir meydan okuma göndermeyebilirsiniz. Ayrıca, aynı işlem için belirli durumlarda Assistant itirazda bulunabilirsiniz. Örneğin, Assistant'ten bir kapının yakınında NFC anahtar kartı yoksa kapıyı açmak için istek göndermesini isteyebilir ancak anahtar kartı varsa istek göndermemesini sağlayabilirsiniz.

Assistant, açık onay veya kişisel kimlik numarası (PIN) olmak üzere iki tür istek gönderebilir. Bu işlem, Assistant'den işleminize gönderilen QUERY ve EXECUTE niyetlerine bir itiraz bloğu ekler ve challengeNeeded hata yanıtını kabul eder. Assistant, 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 istem verilerini doğrulayabilirsiniz.

Assistant, istem göndermek için iletişim kullanır ancak Assistant'ü sesli olmayan yüzeylerde kullanırsanız PIN ve onaylar ekranda yapılır.

Desteklenen cihaz türleri

İkincil kullanıcı doğrulaması tüm cihaz türlerinde desteklenir.

Desteklenen cihaz özellikleri

İkincil kullanıcı doğrulaması tüm cihaz özellikleri için desteklenir.

Desteklenen giriş sorgulaması türleri

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

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

İtiraz yok

Bu örnekte, ışıkları açma isteğinde bulunmadan başarılı bir EXECUTE isteği ve yanıtı gösterilmektedir.

Kullanıcı Işıkları açın.
Google Assistant Tamam, 3 ışığı açıyorum.
İ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 veya basit bir onay kimlik doğrulaması olan ikincil kullanıcı onay kimlik doğrulaması.

ackNeeded doğrulama türleri şunlardır:

ackNeeded simple

Bu örnekte, ışığı karartma ackNeeded isteği ve ışığı karartma onayı içeren basit bir istek ve yanıt gösterilmektedir.

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

Özellik durumlarıyla ackNeeded

Bir özellik için durum kullanabilen ikincil kullanıcı onayı kimlik doğrulaması. Örneğin, TemperatureSetting özelliğiyle çalışıyorsanız ve hem thermostatMode hem de thermostatTemperatureSetpoint ayarlandıysa Assistant Klima sıcaklığını 28 dereceye ayarlamak istediğinizden emin misiniz? sorusunu sorabilir.

Ayrıca, Assistant'ün belirli bir isteğe göre belirli bir işlem yapmasını sağlamak için yanıta bir durum da ekleyebilirsiniz.

Aşağıdaki özellikler ve durumlar, özellik durumlarıyla ackNeeded'ü destekler. Belirli bir özelliğin listelenmesinin nedeni, özelliğin tüm durumlarının desteklenmesidir.

Bu örnekte, özellik durumunu kullanan bir ackNeeded istemiyle birlikte bir istek ve yanıt gösterilmektedir. Klima modunu ısıtmaya değiştirir ve sıcaklığı 28 dereceye ayarlar. Ardından Assistant, yanıtta 28 değerinde bir thermostatTemperatureSetpoint döndürüldüğünden kullanıcılardan ısıtmayı açmaları ve sıcaklığı 28 dereceye ayarlamalarını ister.

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

pinNeeded

Güvenlik cihazları için pinNeeded istemi önerilir.

Bu örnekte, pinNeeded istem içeren ilk istek ve yanıt gösterilmektedir. Örnekte, pinNeeded meydan okuması 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 sağlayabilir.

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 kodunu 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
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Yanlış PIN

Bu örnekte, istek ve yanıt challengeFailedPinNeeded istemiyle gösterilmektedir. Bu istem, ilk pinNeeded isteği 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 tooManyFailedAttemptshata 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 kodunu 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 kodunu alabilir 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ı. Lütfen söz konusu işlemi tamamlamak için cihazınızın uygulamasına gidin.
  • pinIncorrect: Maalesef güvenlik kodu yanlış.
  • userCancelled - Tamam

Hataların ve istisnaların tam listesini inceleyin.