Selamat datang di Pusat Developer Google Home, tujuan baru untuk mempelajari cara mengembangkan tindakan smart home. Catatan: Anda akan terus membuat tindakan di konsol Actions.

Verifikasi Pengguna Sekunder

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Verifikasi pengguna sekunder memungkinkan Anda menambahkan keamanan faktor kedua ke perintah suara. Hal ini memungkinkan Anda menambahkan keamanan tambahan untuk tindakan tertentu seperti menonaktifkan kamera keamanan atau membuka pintu. Verifikasi pengguna sekunder tidak terikat dengan karakteristik perangkat tertentu, yang memungkinkan Anda menentukan kapan Asisten Google mengeluarkan tantangan. Misalnya, Anda dapat memilih untuk menampilkan masalah bagi fitur AktifNonaktif untuk kamera keamanan, tetapi tidak memunculkan tantangan untuk fitur Aktif Nonaktif untuk lampu. Anda juga dapat membuat Asisten Google mengeluarkan tantangan dalam situasi tertentu untuk tindakan yang sama. Misalnya, Anda dapat meminta Asisten Google mengeluarkan permintaan tantangan untuk membuka pintu jika keyfob NFC tidak berada di dekat pintu tersebut, tetapi tidak mengeluarkan tantangan jika keyfob ada.

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

Asisten Google menggunakan dialog untuk mengeluarkan tantangan, tetapi jika Anda menggunakan Asisten Google pada platform non-suara, PIN dan konfirmasi dilakukan di layar.

Jenis perangkat yang didukung

Verifikasi pengguna sekunder didukung di semua jenis perangkat.

Karakteristik perangkat yang didukung

Verifikasi pengguna sekunder didukung untuk semua fitur perangkat.

Jenis verifikasi login yang didukung

Berikut adalah jenis verifikasi verifikasi pengguna sekunder yang didukung:

  • Tidak ada tantangan - Permintaan dan respons yang tidak menggunakan Verifikasi verifikasi pengguna sekunder.
  • ackNeeded - Verifikasi pengguna sekunder yang memerlukan konfirmasi eksplisit (ya atau tidak) dan juga dapat menggunakan status fitur sebagai masukan respons. Jenis verifikasi ini tidak direkomendasikan untuk perangkat dan fitur keamanan.
  • pinNeeded - Verifikasi pengguna sekunder yang memerlukan Nomor Pengenal 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.
Asisten Google 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 fitur atau autentikasi konfirmasi sederhana.

Berikut adalah jenis-jenis jenis tantangan ackNeeded:

ackNeed sederhana

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

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

ackNeeded dengan status fitur

Autentikasi konfirmasi pengguna sekunder yang dapat menggunakan status untuk fitur. Misalnya, jika Anda menangani fitur TemperatureSetting dan thermostatMode serta thermostatTemperatureSetpoint disetel, Asisten Google dapat bertanya Apakah Anda ingin menyetel pemanas pada AC ke 28 derajat?

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

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

Contoh ini menunjukkan permintaan dan respons dengan tantangan ackNeeded yang menggunakan status fitur. Mode ini mengubah mode pendingin udara menjadi panas dan menyetel suhu ke 28 derajat. Kemudian, Asisten Google akan meminta konfirmasi pengguna untuk mengaktifkan penghangat dan menyetel suhu ke 28 derajat karena thermostatTemperatureSetpoint 28 ditampilkan sebagai status dalam respons.

Pengguna Atur mode AC ke mode hangat.
Asisten Google Yakin mau menyetel penghangat di AC ke 28 derajat?
Pengguna Ya.
Asisten Google Menyetel panas 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
      }
    }]
  }
}

diperlukan

Tantangan pinNeeded direkomendasikan untuk perangkat keamanan.

Contoh ini menunjukkan permintaan dan respons awal dengan tantangan pinNeeded. Contoh ini menampilkan respons dengan tantangan pinNeeded, sehingga Asisten Google 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.
Asisten Google 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 menunjukkan permintaan dan respons dengan tantangan challengeFailedPinNeeded. Tantangan ini harus digunakan setelah tantangan pinNeeded awal gagal.

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

Pengguna 333222
Asisten Google 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 dari PIN yang valid.

Pengguna 333444
Asisten Google 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 tamu.
Asisten Google 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 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.