İkincil Kullanıcı Doğrulaması

İkincil kullanıcı doğrulaması, sesli komutlara ikinci faktör güvenliği eklemenize olanak tanır. Bu özellik, güvenlik kamerasını kapatma veya kapıyı açma gibi belirli işlemler için ek güvenlik katmanı eklemenize olanak tanır. İkincil kullanıcı doğrulama, belirli bir cihaz özelliğine bağlı değildir. Bu sayede, Google Assistant'nın ne zaman doğrulama isteğinde bulunacağına karar verebilirsiniz. Örneğin, bir güvenlik kamerası için OnOff özelliğiyle ilgili doğrulama isteğinde bulunabilir ancak bir ışık için OnOff özelliğiyle ilgili doğrulama isteğinde bulunmayabilirsiniz. Ayrıca, belirli durumlarda aynı işlem için Assistant sorun bildirebilirsiniz. Örneğin, bir NFC anahtarlığı kapının yakınında değilse Assistant'nın kapıyı açmak için bir sorgulama isteği göndermesini, anahtarlık mevcutsa ise sorgulama isteği göndermemesini isteyebilirsiniz.

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

Assistant, meydan okumayı başlatmak için iletişim kutusunu kullanır ancak Assistant'yı sesli olmayan platformlarda kullanırsanız PIN ve onay işlemleri 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 sertifika alması için belirli güvenlik açısından hassas 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ü OnOff ise CAMERA özelliği.
  • Cihaz türü DOOR, GARAGE, GATE veya WINDOW ise OpenClose özelliği.
  • Kilidi açarken LockUnlock özelliği.
  • Silahı devre dışı bırakırken veya devre dışı bırakma işlemini iptal ederken ArmDisarm özelliği.
  • Cihaz türü NETWORK veya ROUTER ise Reboot, SoftwareUpdate ya da NetworkControl özelliği.

Cihaz türü AC_UNIT ise ve entegrasyon Japonya'da konum tabanlıysa TemperatureSetting özelliği için ackNeededzorluk türü gereklidir.

Desteklenen giriş sorgulaması türleri

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

  • Sorgulama yok: İkincil kullanıcı doğrulama sorgulaması kullanılmayan 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 bir kullanıcı doğrulamasıdır. Bu tür zorluklar, güvenlik cihazları ve özellikleri için önerilmez.
  • pinNeeded: Kişisel kimlik numarası (PIN) gerektiren ikincil bir kullanıcı doğrulamasıdır. Güvenlik cihazları ve özellikleri için idealdir.

Zorluk yok

Bu örnekte, ışıkları açma zorluğu olmadan 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ı onaylı kimlik doğrulama veya basit onaylı kimlik doğrulama.

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

ackNeeded simple

Bu örnekte, ışığı karartma ackNeeded zorluğu içeren basit bir istek ve yanıt ile ışığın karartıldığını onaylayan yanıt gösterilmektedir.

Kullanıcı Salonun ışığını kıs.
Google Assistant Salonun ışığını kısma Emin misiniz?
Kullanıcı Evet.
Google Assistant Salonun ışığını kısma
İ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
          }
        }]
      }]
    }
  }]
}
Response 2
{
  "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.

Ayrıca, belirli bir isteğe göre belirli bir işlemi gerçekleştirmesi için yanıta durum da ekleyebilirsiniz.Assistant

Aşağıdaki özellikler ve durumlar, özellik durumlarıyla ackNeeded'yı 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 sorgu türünü kullanın. Ancak devre dışı bırakma ve devre dışı bırakmayı iptal etme işlevleri için pinNeeded sorgu türü gerekir.
  • Fill
  • LockUnlock
    • Cihazı kilitlemek için ackNeeded, kilidi açmak için pinNeeded zorluk türünü kullanın.
  • OnOff
    • on
    • Bu özellik için ackNeeded yarışma türünü kullanın. Bu özellik CAMERA cihazlarla kullanılırken pinNeeded meydan okuma 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 meydan okuma türü gereklidir.
  • Scene
  • TemperatureSetting
    • thermostatMode
    • thermostatTemperatureSetpoint
    • thermostatTemperatureSetpointHigh
    • thermostatTemperatureSetpointLow

Bu örnekte, bir ö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, yanıtta durum olarak 28 thermostatTemperatureSetpoint döndürüldüğünden Assistant, kullanıcılardan ısıtmayı açıp sıcaklığı 28 dereceye ayarlamalarını ister.

Kullanıcı Klima modunu ısıtmaya ayarlayın.
Google Assistant Klimanın ısıtma ayarı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
          }
        }]
      }]
    }
  }]
}
Response 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 zorluğu önerilir.

Bu örnekte, pinNeeded zorluk içeren bir ilk istek ve yanıt gösterilmektedir. Örnek, pinNeeded sorgulaması içeren bir yanıt döndürür. Bu nedenle Assistant, PIN 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 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
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Yanlış PIN

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

challengeFailedPinNeeded türü iade edildiğinde Assistant, güvenlik kodunu tekrar ister. Kullanıcı çok fazla sayıda 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ı Salonun ışığını kıs.
Google Assistant 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.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: Üzgünüz, ç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 ve istisnalar listesinin tamamını inceleyin.