Verifikasi Pengguna Sekunder

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

Assistant dapat memberikan dua jenis verifikasi - 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 dalam blok tantangan. Selanjutnya, Anda dapat memvalidasi data tantangan untuk menentukan apakah pengguna memberikan respons keamanan yang benar atau tidak.

Assistant menggunakan dialog untuk mengeluarkan tantangan, tetapi jika Anda menggunakan Assistant di platform non-suara, PIN dan konfirmasi 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:

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

Tidak ada tantangan

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

User 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 sebuah karakteristik atau autentikasi konfirmasi 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.

User Redupkan lampu ruang tamu.
Google Assistant Meredupkan lampu ruang tamu. Yakin?
User 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

Autentikasi konfirmasi pengguna sekunder yang dapat menggunakan status untuk suatu karakteristik. Misalnya, jika Anda menggunakan fitur TemperatureSetting serta thermostatMode dan thermostatTemperatureSetpoint disetel, Assistant dapat menanyakan Yakin ingin menyetel penghangat AC ke 28 derajat?

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

Ciri dan status berikut mendukung ackNeeded dengan status trait. Listingan fitur tertentu menunjukkan bahwa semua statusnya didukung.

Contoh ini menunjukkan permintaan dan respons dengan tantangan ackNeeded yang menggunakan status karakteristik. Fitur ini mengubah mode AC menjadi hangat dan menyetel suhu ke 28 derajat. Kemudian, Assistant akan meminta konfirmasi pengguna untuk mengaktifkan penghangat dan menyetel suhu ke 28 derajat karena thermostatTemperatureSetpoint 28 ditampilkan sebagai status dalam respons.

User Setel mode AC ke hangat.
Google Assistant Yakin ingin menyetel penghangat pada AC ke 28 derajat?
User 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 tantangan pinNeeded. 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:

User Buka kunci pintu.
Google Assistant Boleh minta 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.

User 333222
Google Assistant Maaf, kode keamanan salah. Boleh minta 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.

User 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
      }
    }]
  }
}
User Redupkan lampu ruang tamu.
Google Assistant Boleh minta 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 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.