İ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ü
CAMERAiseOnOffözelliği. - Cihaz türü
DOOR,GARAGE,GATEveyaWINDOWiseOpenCloseö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ü
NETWORKveyaROUTERiseReboot,SoftwareUpdateveyaNetworkControlö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. |
{ "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 } }] }] } }] }
{ "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. |
{ "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 } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
{ "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 } }] }] } }] }
{ "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
ackNeededsorgulama türünü kullanın. Ancak devre dışı bırakma ve devre dışı bırakmayı iptal etme işlevleri içinpinNeededsorgulama türü gerekir. - Fill
- LockUnlock
- Cihazı kilitlemek için
ackNeededsorgulama türünü, kilidini açmak içinpinNeededsorgulama türünü kullanın. - OnOff
on- Bu özellik için
ackNeededyarışma türünü kullanın. Bu özellikCAMERAcihazlarla kullanıldığındapinNeededsorgulama türü gereklidir. - OpenClose
- Bu özellik için
ackNeededyarışma türünü kullanın. Bu özellikDOOR,GARAGE,GATEveyaWINDOWcihazlarla kullanıldığındapinNeededsorgulama türü gereklidir. - Scene
- TemperatureSetting
thermostatModethermostatTemperatureSetpointthermostatTemperatureSetpointHighthermostatTemperatureSetpointLow
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. |
{ "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" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "states": { "thermostatMode": "heat", "thermostatTemperatureSetpoint": 28 }, "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
{ "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 } }] }] } }] }
{ "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? |
{ "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 } }] }] } }] }
{ "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? |
{ "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" } }] }] } }] }
{ "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. |
{ "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" } }] }] } }] }
{ "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? |
{ "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 } }] }] } }] }
{ "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.