Xác minh người dùng phụ

Tính năng xác minh người dùng phụ cho phép bạn thêm phương thức bảo mật hai yếu tố vào lệnh thoại. Điều này cho phép bạn tăng cường bảo mật cho một số hành động nhất định, chẳng hạn như tắt camera an ninh hoặc mở cửa. Phương thức xác minh người dùng phụ không liên kết với một đặc điểm thiết bị cụ thể, cho phép bạn quyết định thời điểm Google Assistant đưa ra câu đố. Ví dụ: bạn có thể chọn đưa ra thử thách cho đặc điểm OnOff của máy ảnh an ninh, nhưng không đưa ra thử thách cho đặc điểm OnOff của đèn. Bạn cũng có thể yêu cầu Assistant đưa ra thử thách trong một số trường hợp nhất định cho cùng một hành động. Ví dụ: bạn có thể yêu cầu Assistant đưa ra yêu cầu thử thách để mở cửa nếu chìa khoá thông minh NFC không ở gần cửa đó, nhưng không đưa ra yêu cầu thử thách nếu có chìa khoá thông minh.

Assistant có thể đưa ra hai loại thử thách – xác nhận rõ ràng hoặc mã số nhận dạng cá nhân (PIN). Thao tác này sẽ thêm một khối thách thức vào ý định QUERYEXECUTE được gửi từ Assistant trở lại hành động của bạn và chấp nhận phản hồi lỗi challengeNeeded. Sau đó, Assistant sẽ gửi lại yêu cầu ý định đến hành động của bạn cùng với dữ liệu thử thách trong khối thử thách. Sau đó, bạn có thể xác thực dữ liệu thử thách để xác định xem người dùng có đưa ra câu trả lời bảo mật chính xác hay không.

Assistant sử dụng hộp thoại để đưa ra lời nhắc, nhưng nếu bạn sử dụng Assistant trên các nền tảng không phải giọng nói, thì mã PIN và xác nhận sẽ được thực hiện trên màn hình.

Các loại thiết bị được hỗ trợ

Bước xác minh người dùng phụ được hỗ trợ trên tất cả các loại thiết bị.

Các đặc điểm của thiết bị được hỗ trợ

Tính năng xác minh người dùng phụ được hỗ trợ cho tất cả các đặc điểm thiết bị.

Các loại thử thách được hỗ trợ

Sau đây là các loại thử thách xác minh người dùng thứ hai được hỗ trợ:

  • Không có thử thách – Yêu cầu và phản hồi không sử dụng thử thách xác minh người dùng phụ.
  • ackNeeded – Bước xác minh người dùng thứ hai yêu cầu xác nhận rõ ràng (có hoặc không) và cũng có thể sử dụng trạng thái đặc điểm làm phản hồi. Bạn không nên sử dụng loại thử thách này cho các thiết bị và đặc điểm bảo mật.
  • pinNeeded – Phương thức xác minh người dùng phụ yêu cầu mã số nhận dạng cá nhân (PIN). Đây là phương thức lý tưởng cho các thiết bị và đặc điểm bảo mật.

Không có thử thách

Ví dụ này cho thấy một yêu cầu và phản hồi EXECUTE thành công mà không có thử thách nào để bật đèn.

Người dùng Bật đèn.
Google Assistant Được rồi, tôi đang bật 3 đèn.
Yêu cầu
{
  "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
          }
        }]
      }]
    }
  }]
}
Phản hồi
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Xác thực xác nhận người dùng phụ có thể sử dụng nhiều trạng thái cho một đặc điểm hoặc xác thực xác nhận đơn giản.

Có các loại thử thách ackNeeded sau:

ackNeeded đơn giản

Ví dụ này cho thấy một yêu cầu và phản hồi đơn giản với thử thách ackNeeded để làm mờ ánh sáng và xác nhận làm mờ ánh sáng.

Người dùng Giảm độ sáng của đèn phòng khách.
Google Assistant Giảm độ sáng của đèn phòng khách. Bạn có chắc chắn không?
Người dùng Có.
Google Assistant Giảm độ sáng của đèn phòng khách.
Yêu cầu 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
          }
        }]
      }]
    }
  }]
}
Phản hồi 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Yêu cầu 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
          }
        }]
      }]
    }
  }]
}
Phản hồi 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

ackNeeded với trạng thái đặc điểm

Phương thức xác thực xác nhận người dùng phụ có thể sử dụng các trạng thái cho một đặc điểm. Ví dụ: nếu bạn đang làm việc với thuộc tính TemperatureSetting và cả thermostatModethermostatTemperatureSetpoint đều được đặt, Assistant có thể hỏi Bạn có chắc chắn muốn đặt nhiệt độ trên điều hòa thành 28 độ không?

Bạn cũng có thể đưa một trạng thái vào phản hồi để yêu cầu Assistant thực hiện một hành động cụ thể dựa trên một yêu cầu nhất định.

Các đặc điểm và trạng thái sau đây hỗ trợ ackNeeded với trạng thái đặc điểm. Danh sách một đặc điểm cụ thể cho biết tất cả các trạng thái của đặc điểm đó đều được hỗ trợ.

Ví dụ này cho thấy một yêu cầu và phản hồi với thử thách ackNeeded sử dụng trạng thái đặc điểm. Thao tác này sẽ thay đổi chế độ điều hòa thành sưởi ấm và đặt nhiệt độ thành 28 độ. Sau đó, Assistant yêu cầu người dùng xác nhận để bật chế độ sưởi và đặt nhiệt độ thành 28 độ vì thermostatTemperatureSetpoint của 28 được trả về dưới dạng trạng thái trong phản hồi.

Người dùng Đặt chế độ điều hòa thành sưởi ấm.
Google Assistant Bạn có chắc chắn muốn đặt nhiệt độ trên điều hòa ở mức 28 độ không?
Người dùng Có.
Google Assistant Tôi đang đặt mức nhiệt trên điều hòa ở 28 độ.
Yêu cầu 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"
          }
        }]
      }]
    }
  }]
}
Phản hồi 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Yêu cầu 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
          }
        }]
      }]
    }
  }]
}
Phản hồi 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

Bạn nên sử dụng thử thách pinNeeded cho các thiết bị bảo mật.

Ví dụ này cho thấy một yêu cầu và phản hồi ban đầu với một thử thách pinNeeded. Ví dụ này trả về một phản hồi có thử thách pinNeeded, vì vậy, Assistant sẽ yêu cầu ghim. Tại thời điểm này, người dùng có thể cung cấp mã PIN không chính xác hoặc hợp lệ.

Yêu cầu và phản hồi mẫu cho mã PIN không chính xác hoặc hợp lệ:

Người dùng Mở khoá cửa.
Google Assistant Bạn cho tôi xin mã bảo mật được không?
Yêu cầu
{
  "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
          }
        }]
      }]
    }
  }]
}
Phản hồi
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Mã PIN không chính xác

Ví dụ này cho thấy yêu cầu và phản hồi với một thử thách challengeFailedPinNeeded. Bạn nên sử dụng thử thách này sau khi thử thách pinNeeded ban đầu không thành công.

Khi trả về một loại challengeFailedPinNeeded, Assistant sẽ yêu cầu nhập lại mã bảo mật. Nếu người dùng thực hiện quá nhiều lần thử không thành công, bạn có thể trả về phản hồi lỗi tooManyFailedAttempts. Xem phần Phản hồi lỗi.

Người dùng 333222
Google Assistant Rất tiếc, mã bảo mật này không chính xác. Bạn cho tôi xin mã bảo mật được không?
Yêu cầu
{
  "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"
          }
        }]
      }]
    }
  }]
}
Phản hồi
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "challengeFailedPinNeeded"
      }
    }]
  }
}

Mã PIN hợp lệ

Ví dụ này cho thấy yêu cầu và phản hồi của một mã PIN hợp lệ.

Người dùng 333444
Google Assistant Đang mở khoá cửa.
Yêu cầu
{
  "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"
          }
        }]
      }]
    }
  }]
}
Phản hồi
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
Người dùng Giảm độ sáng của đèn phòng khách.
Google Assistant Bạn cho tôi xin mã bảo mật được không?
Yêu cầu
{
  "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
          }
        }]
      }]
    }
  }]
}
Phản hồi
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Phản hồi lỗi

Sau đây là một số mã lỗi có thể được trả về cùng với phản hồi của bạn:

  • tooManyFailedAttemptsRất tiếc, bạn đã thử quá nhiều lần nhưng không thành công. Vui lòng mở ứng dụng trên thiết bị của bạn để hoàn tất thao tác đó.
  • pinIncorrectRất tiếc, mã bảo mật này không chính xác.
  • userCancelledOk

Xem danh sách đầy đủ lỗi và ngoại lệ.