Akıllı ev işlemlerinin nasıl geliştirileceğini öğrenebileceğiniz yeni adres olan Google Home Geliştirici Merkezi'ne hoş geldiniz. Not: Actions Console'da işlem derlemeye devam edersiniz.

İkincil Kullanıcı Doğrulaması

İkincil kullanıcı doğrulaması, sesli komutlara ikinci faktör güvenliği eklemenize olanak tanır. Bu şekilde güvenlik kamerası kapatma veya kapı açma gibi belirli işlemler için ek güvenlik sağlayabilirsiniz. İkincil kullanıcı doğrulaması, Google Assistant özelliğinin ne zaman meydan okuyacağına karar vermenize olanak tanıyan belirli bir cihaz özelliğine bağlı değildir. Örneğin, güvenlik kamerası için OnOff özelliği için bir test hazırlamayı, ancak bir ışık için OnOff özelliği için bir meydan okuma düzenlememeyi seçebilirsiniz. Ayrıca belirli durumlarda aynı işlem için Assistant sorunlar yaşayabilirsiniz. Örneğin, bir NFC anahtarlığı söz konusu kapının yakınında değilse Assistant adlı kişinin bir kapıyı açmak için meydan okuma isteğinde bulunmasını, ancak anahtar uzaktan kumandası varsa bir görev yayınlamamasını isteyebilirsiniz.

Assistant, iki tür giriş sorgulaması düzenleyebilir: açık onay veya kişisel kimlik numarası (PIN). Bu işlem, QUERY öğesine bir meydan okuma bloğu ekler ve Assistant hizmetinden EXECUTE işlevinize geri gönderilen EXECUTE niyeti içerir ve challengeNeeded hata yanıtını kabul eder. Assistant daha sonra meydan okuma blokundaki meydan okuma verilerini kullanarak intent isteğinizi işleme gönderir. Ardından, kullanıcının doğru güvenlik yanıtı verip vermediğini belirlemek için meydan okuma verilerini doğrulayabilirsiniz.

Assistant, sorgulamayı yapmak için iletişim kutusunu kullanır, ancak Assistant ses harici platformlarda kullanılırsa 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 yarışma türleri

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

  • Giriş sorgulaması yok: İkincil kullanıcı doğrulama sorgulaması kullanmayan bir istek ve yanıttır.
  • ack Needed - Açık onay gerektiren (evet veya hayır) ve özellik durumlarını da yanıt geri bildirimi olarak kullanabilen ikincil bir kullanıcı doğrulaması. Bu giriş türü, güvenlik cihazları ve özellikler için önerilmez.
  • pin Needed: Güvenlik cihazları ve özellikleri için ideal olan kişisel bir kimlik numarası (PIN) gerektiren ikincil bir kullanıcı doğrulamasıdır.

Yarışma yok

Bu örnekte, ışıkları açma meydan okuması olmadan EXECUTE için başarılı bir istek ve yanıt gösterilmektedir.

Kullanıcı Işıkları aç.
Google Assistant Tamam, 3 lamba 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
      }
    }]
  }
}

Onay ihtiyacı

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

Aşağıdaki türlerde ackNeeded meydan okuma türü mevcuttur:

ackWhat sade

Bu örnekte, ışığı karartma isteği ve ışığın karartılması için ackNeeded ile basit bir istek ve yanıt 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.
1. İ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 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
2. İ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
          },
          "challenge": {
            "ack": true
          }
        }]
      }]
    }
  }]
}
Yanıt 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

acked - Özellik özellikleriyle ilişkili

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

Ayrıca Assistant öğesinin belirli bir isteğe dayalı belirli bir işlem gerçekleştirmesini sağlamak için yanıta durum ekleyebilirsiniz.

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

Bu örnekte, özellik durumunu kullanan ackNeeded sorgulaması içeren bir istek ve yanıt gösterilmektedir. Klima modunu ısıtma moduna alır ve sıcaklığı 28 dereceye ayarlar. Ardından Assistant yanıttan durum olarak thermostatTemperatureSetpoint / 28 döndürüldüğü için kullanıcılardan onay almalarını ve sıcaklığı 28 dereceye ayarlamasını ister.

Kullanıcı Klimayı ısıtma moduna ayarla.
Google Assistant Klimanın ısısını 28 dereceye ayarlamak istediğinden emin misin?
Kullanıcı Evet.
Google Assistant sn Klimanın ısısı 28 dereceye ayarlanıyor.
1. İstek
{
  "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"
      }
    }]
  }
}
2. İstek
{
  "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
      }
    }]
  }
}

PIN gerekiyor

Güvenlik cihazları için pinNeeded yarışması önerilir.

Bu örnekte, pinNeeded ile başlayan bir 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ı, hatalı veya geçerli bir raptiye 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, bir challengeFailedPinNeeded meydan okumasıyla istek ve yanıt gösterilmektedir. Bu meydan okuma, ilk pinNeeded deneme başarısız olduktan sonra kullanılmalıdır.

challengeFailedPinNeeded türü döndürülürken 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ı başlıklı makaleye 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 isteği ve yanıtı gösterilmektedir.

Kullanıcı 333444
Google Assistant Kapı 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 döndürülebilecek bazı hata kodları aşağıda verilmiştir:

  • challengeFailedNotSetup - Bu işlem için güvenlik kodu gerekiyor ama cihazının uygulamasında güvenlik kodu ayarlanmamış.
  • tooManyFailedAttempts - Maalesef çok fazla sayıda 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 - Tamam.

Hataların ve istisnaların tam listesini inceleyin.