Verifikasi Pengguna Sekunder

Dengan verifikasi pengguna sekunder, Anda dapat menambahkan keamanan faktor kedua ke suara perintah. Hal ini memungkinkan Anda memberikan keamanan tambahan untuk tindakan tertentu seperti mematikan kamera keamanan atau membuka pintu. Verifikasi sekunder pengguna adalah tidak terikat pada karakteristik perangkat tertentu yang memungkinkan Anda memutuskan kapan harus Google Assistant memberikan tantangan. Misalnya, Anda dapat memilih guna memberikan tantangan untuk trait OnOff untuk kamera keamanan, tetapi tidak memberikan tantangan untuk OnOff karakteristik untuk cahaya. Anda juga dapat memiliki Assistant memberikan tantangan dalam situasi tertentu untuk tindakan yang sama. Sebagai contoh, Anda dapat meminta agar Assistant mengeluarkan permintaan verifikasi login untuk membuka pintu jika keyfob NFC tidak ada di dekat pintu tersebut, tetapi tidak memberikan tantangan jika {i>keyfob<i} ada.

Assistant dapat memberikan dua jenis tantangan - konfirmasi eksplisit atau nomor identifikasi pribadi (PIN). Tindakan ini menambahkan blok tantangan ke intent QUERY dan EXECUTE yang dikirim dari Assistant kembali ke tindakan Anda dan menerima error challengeNeeded yang dihasilkan. Assistant kemudian mengirimkan kembali permintaan intent ke tindakan Anda dengan data tantangan di blok tantangan. Anda kemudian dapat memvalidasi data verifikasi untuk menentukan apakah pengguna memberikan keamanan yang benar yang dihasilkan.

Assistant menggunakan dialog untuk mengeluarkan tantangan, tetapi jika Anda gunakan Assistant di platform non-suara, PIN, dan konfirmasi akan dilakukan di layar.

Jenis perangkat yang didukung

Verifikasi pengguna sekunder didukung di semua jenis perangkat.

Trait perangkat yang didukung

Verifikasi pengguna sekunder didukung untuk semua karakteristik perangkat.

Jenis tantangan yang didukung

Berikut adalah jenis verifikasi login pengguna sekunder yang didukung:

  • Tidak ada tantangan - Permintaan dan respons yang tidak menggunakan Verifikasi login pengguna sekunder.
  • ackNeeded - Verifikasi pengguna sekunder yang memerlukan pengakuan eksplisit (ya atau tidak) dan juga dapat menggunakan status karakteristik sebagai masukan respons. Jenis verifikasi ini tidak direkomendasikan untuk keamanan perangkat dan karakteristik.
  • pinNeeded - Verifikasi pengguna sekunder yang memerlukan nomor identifikasi pribadi (PIN), yang ideal untuk perangkat keamanan dan karakteristik.

Tidak ada tantangan

Contoh ini menampilkan permintaan dan respons EXECUTE yang berhasil tanpa tantangan menyalakan lampu.

Pengguna Nyalakan lampu.
Google Assistant Oke, menyalakan 3 lampu.
Minta
{
  "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
          }
        }]
      }]
    }
  }]
}
Respons
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Autentikasi konfirmasi pengguna sekunder yang dapat menggunakan beberapa status untuk sifat atau otentikasi pengakuan sederhana.

Ada beberapa jenis tantangan ackNeeded berikut:

ackNeeded sederhana

Contoh ini menunjukkan permintaan dan respons sederhana dengan tantangan ackNeeded untuk meredupkan lampu dan konfirmasi untuk meredupkan lampu.

Pengguna Redupkan lampu ruang tamu.
Google Assistant Meredupkan lampu ruang tamu. Yakin?
Pengguna Ya.
Google Assistant Meredupkan lampu ruang tamu.
Permintaan 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
          }
        }]
      }]
    }
  }]
}
Respons 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Permintaan 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
          }
        }]
      }]
    }
  }]
}
Respons 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

ackDiperlukan dengan status karakteristik

Otentikasi pengakuan pengguna sekunder yang dapat menggunakan status untuk karakteristik. Misalnya, jika Anda bekerja dengan Sifat TemperatureSetting dan keduanya thermostatMode dan thermostatTemperatureSetpoint telah ditetapkan, Assistant dapat menanyakan Yakin ingin menyetel pemanas AC ke 28 derajat?

Anda juga dapat menyertakan status dalam respons untuk memiliki Assistant melakukan tindakan tertentu berdasarkan permintaan.

Ciri dan status berikut mendukung ackNeeded dengan status trait. J daftar sifat tertentu menunjukkan bahwa semua statusnya didukung.

Contoh ini menunjukkan permintaan dan respons dengan verifikasi ackNeeded yang menggunakan status karakteristik. Alat ini mengubah mode AC ke mode hangat dan menyetel hingga 28 derajat. Kemudian, Assistant meminta pengguna konfirmasi untuk menyalakan pemanas dan menyetel suhu ke 28 derajat karena thermostatTemperatureSetpoint dari 28 ditampilkan sebagai status dalam responsnya.

Pengguna Setel mode AC ke hangat.
Google Assistant Yakin ingin menyetel pemanas AC ke 28 derajat derajat?
Pengguna Ya.
Google Assistantnt Menyetel penghangat AC ke 28 derajat.
Permintaan 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"
          }
        }]
      }]
    }
  }]
}
Respons 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Permintaan 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
          }
        }]
      }]
    }
  }]
}
Respons 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

Tantangan pinNeeded direkomendasikan untuk perangkat keamanan.

Contoh ini menunjukkan permintaan dan respons awal dengan pinNeeded tantangan. Contoh ini menampilkan respons dengan tantangan pinNeeded, jadi Assistant meminta pin. Pada tahap ini, pengguna dapat memberikan pin yang salah atau valid.

Contoh permintaan dan respons untuk PIN yang salah atau valid:

Pengguna Buka kunci pintu.
Google Assistant Boleh minta kode keamanan Anda?
Minta
{
  "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
          }
        }]
      }]
    }
  }]
}
Respons
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

PIN salah

Contoh ini menunjukkan permintaan dan respons dengan challengeFailedPinNeeded tantangan. Tantangan ini harus digunakan setelah tantangan pinNeeded awal gagal.

Saat jenis challengeFailedPinNeeded ditampilkan, Assistant meminta kode keamanan lagi. Jika pengguna melakukan terlalu banyak upaya yang gagal, Anda dapat menampilkan tooManyFailedAttempts respons error yang ada. Lihat Respons error.

Pengguna 333222
Google Assistant Maaf, kode keamanan salah. Boleh minta kode keamanan Anda?
Minta
{
  "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"
          }
        }]
      }]
    }
  }]
}
Respons
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "challengeFailedPinNeeded"
      }
    }]
  }
}

PIN valid

Contoh ini menunjukkan permintaan dan respons PIN yang valid.

Pengguna 333444
Google Assistant Membuka kunci pintu.
Minta
{
  "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"
          }
        }]
      }]
    }
  }]
}
Respons
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
Pengguna Redupkan lampu ruang tamu.
Google Assistant Boleh minta kode keamanan Anda?
Minta
{
  "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
          }
        }]
      }]
    }
  }]
}
Respons
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Respons error

Berikut adalah beberapa kode error yang dapat ditampilkan bersama respons Anda:

  • tooManyFailedAttempts - Maaf, terlalu banyak upaya yang gagal. Buka aplikasi perangkat Anda untuk menyelesaikan tindakan tersebut.
  • pinIncorrect - Maaf, kode keamanan salah.
  • userCancelled - Oke

Lihat daftar lengkap error dan pengecualian.