İkincil Kullanıcı Doğrulaması

İkincil kullanıcı doğrulaması, sesli komutlara ikinci düzey güvenlik eklemenizi sağlar. Bu şekilde, güvenlik kamerasını kapatma veya kapı açma gibi belirli işlemler için güvenliği artırabilirsiniz. İkincil kullanıcı doğrulaması, belirli bir cihaz özelliğine bağlı değildir. Bu sayede, Google Assistant uygulamasının ne zaman sorun yaşaması gerektiğine karar verebilirsiniz. Örneğin, bir güvenlik kamerasında OnOff özelliği için bir meydan okuma yayınlamayı, ancak bir ışık için OnOff özelliği için meydan okuma yayınlamayın. Ayrıca, aynı işlem için belirli durumlarda Assistant sorunu yaşamanız gerekebilir. Örneğin, NFC anahtar kilidi bir kapının yakınında değilse Assistant tarafından kapının açılması için sorgulama isteği göndermesini isteyebilirsiniz.

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

Assistant, sorgulamayı uygulamak için iletişim kutusunu kullanır ancak Assistant uygulamasını sesli olmayan yüzeylerde kullanırsanız ekranda PIN ve onaylar gerçekleşir.

Desteklenen cihaz türleri

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

Desteklenen cihaz traits

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

Desteklenen giriş sorgulaması türleri

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

  • Sorgulama yok: İkincil kullanıcı doğrulama sorgulamasını 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 sorgulama türü, 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 kullanıcı doğrulaması.

Meydan okuma yok

Bu örnekte, ışıkları açmaya gerek kalmadan başarılı bir EXECUTE isteği ve yanıtı gösterilmektedir.

Kullanıcı Işıkları aç.
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 veya basit bir onay kimlik doğrulaması için birden fazla durum kullanabilen ikincil kullanıcı onayı kimlik doğrulaması.

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

ackNoteed basit

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

Kullanıcı Salonun ışığını kıs.
Google Assistant Salonun ışığı kısılıyor. Emin misiniz?
Kullanıcı Evet.
Google Assistant Salonun ışığı kısılı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 birlikte ack needed

Bir özellik için durumları 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ısını 28 dereceye ayarlamak istediğinizden emin misiniz? diye sorabilir.

Ayrıca, Assistant ürününün belirli bir isteğe göre belirli bir işlemi gerçekleştirmesini sağlamak için yanıta bir durum ekleyebilirsiniz.

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

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

Kullanıcı Klima modunu ısıtma moduna ayarla.
Google Assistant Klimanın ısısını 28 dereceye ayarlamak istediğinden emin misin?
Kullanıcı Evet.
Google Assistantnt Klimanın ısısını 28 dereceye ayarlıyorum.
İ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

pinNeeded sorgulaması, güvenlik cihazları için önerilir.

Bu örnekte, pinNeeded giriş sorgulaması içeren ilk istek ve yanıt gösterilmektedir. Örnek, pinNeeded sorgulaması içeren bir yanıt döndürdüğünden Assistant PIN ister. Bu noktada, kullanıcı yanlış veya geçerli bir PIN sağlayabilir.

Örnek istek ve yanlış veya geçerli PIN için 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, challengeFailedPinNeeded giriş sorgulaması içeren istek ve yanıt gösterilmektedir. Bu sorgulama, ilk pinNeeded sorgulaması başarısız olduktan sonra kullanılmalıdır.

Bir challengeFailedPinNeeded türü döndürüldüğünde, Assistant güvenlik kodunu tekrar ister. Kullanıcı çok fazla sayıda başarısız deneme gerçekleştirirse tooManyFailedAttempts hata yanıtı döndürebilirsiniz. Hata yanıtları bölümüne göz atı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 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ı Salonun ışığı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:

  • challengeFailedNotSetup - Bu işlem bir güvenlik kodu gerektiriyor ancak cihazınızın uygulamasında ayarlanmamış.
  • tooManyFailedAttempts - Maalesef çok fazla başarısız girişimde bulunuldu. Bu işlemi tamamlamak için lütfen cihazınızın uygulamasına gidin.
  • pinIncorrect - Maalesef güvenlik kodu yanlış.
  • userCancelled - Tamam.

Hataların ve istisnaların tam listesine bakın.