Verifikasi Pengguna Sekunder

Dengan verifikasi pengguna sekunder, Anda dapat menambahkan keamanan faktor kedua ke perintah suara. Dengan demikian, Anda dapat menambahkan keamanan tambahan untuk tindakan tertentu seperti menonaktifkan kamera keamanan atau membuka pintu. Verifikasi pengguna sekunder tidak terikat dengan karakteristik perangkat tertentu, sehingga Anda dapat memutuskan kapan Google Assistant mengeluarkan tantangan. Misalnya, Anda dapat memilih untuk memberikan tantangan untuk fitur OnOff untuk kamera keamanan, tetapi tidak memberikan tantangan untuk fitur OnOff untuk lampu. Anda juga dapat memiliki tantangan Assistant dalam situasi tertentu untuk tindakan yang sama. Misalnya, Anda dapat meminta Assistant mengeluarkan permintaan tantangan untuk membuka pintu jika keyfob NFC tidak berada di dekat pintu tersebut, tetapi tidak mengeluarkan tantangan jika keyfob ada.

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

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

Jenis perangkat yang didukung

Verifikasi sekunder pengguna didukung di semua jenis perangkat.

Trait perangkat yang didukung

Verifikasi sekunder pengguna didukung untuk semua karakteristik perangkat.

Jenis tantangan yang didukung

Berikut adalah jenis verifikasi verifikasi pengguna sekunder yang didukung:

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

Tidak ada tantangan

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

Pengguna Nyalakan lampu.
Google Assistant Oke, menyalakan 3 lampu.
Permintaan
{
  "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 trait atau autentikasi konfirmasi sederhana.

Ada jenis ackNeeded jenis tantangan berikut:

Konfirmasi sederhana

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

Pengguna Redupkan lampu ruang keluarga.
Google Assistant Meredupkan lampu ruang keluarga. Yakin?
Pengguna Ya.
Google Assistant Meredupkan lampu ruang keluarga.
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"
    }]
  }
}

Diperlukan dengan status trait

Autentikasi konfirmasi pengguna sekunder yang dapat menggunakan status untuk suatu fitur. Misalnya, jika Anda menggunakan ciri TemperatureSetting dan thermostatMode serta thermostatTemperatureSetpoint ditetapkan, Assistant dapat menanyakan Apakah Anda yakin ingin menyetel pemanas di AC ke 28 derajat?

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

Trait dan status berikut mendukung ackNeeded dengan status trait. Listingan ciri tertentu menunjukkan bahwa semua statusnya didukung.

Contoh ini menunjukkan permintaan dan respons dengan tantangan ackNeeded yang menggunakan status trait. Fungsi ini mengubah mode AC menjadi hangat dan menyetel suhu ke 28 derajat. Kemudian, Assistant meminta persetujuan pengguna untuk mengaktifkan pemanas dan menyetel suhu ke 28 derajat karena thermostatTemperatureSetpoint dari 28 ditampilkan sebagai status dalam respons.

Pengguna Setel mode AC ke hangat.
Google Assistant Yakin ingin menyetel penghangat di AC ke 28 derajat?
Pengguna Ya.
Google Assistantnt Menyetel penghangat di 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 tantangan pinNeeded. Contoh berikut menampilkan respons dengan tantangan pinNeeded, jadi Assistant akan 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 Bisakah saya meminta kode keamanan Anda?
Permintaan
{
  "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 menampilkan permintaan dan respons dengan tantangan challengeFailedPinNeeded. Tantangan ini harus digunakan setelah tantangan pinNeeded awal gagal.

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

Pengguna 333222
Google Assistant Maaf, kode keamanan salah. Bisakah saya meminta kode keamanan Anda?
Permintaan
{
  "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.
Permintaan
{
  "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 keluarga.
Google Assistant Bisakah saya meminta kode keamanan Anda?
Permintaan
{
  "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 dengan respons Anda:

  • challengeFailedNotSetup - Tindakan ini memerlukan kode keamanan, tetapi belum disiapkan di aplikasi perangkat 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.