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

Phương thức xác minh người dùng thứ hai cho phép bạn thêm cơ chế bảo mật yếu tố thứ hai cho dịch vụ thoại các lệnh. Nhờ đó, bạn có thể tăng cường bảo mật cho một số thao tác như tắt camera an ninh hoặc mở cửa. Phương thức xác minh người dùng phụ mới là không gắn với một đặc điểm cụ thể của thiết bị, cho phép bạn quyết định thời điểm Google Assistant đưa ra một xác thực. Ví dụ: bạn có thể chọn để đưa ra thử thách cho tính trạng OnOff cho một camera an ninh, nhưng không đưa ra thách thức OnOff đối với ánh sáng. Bạn cũng có thể có Assistant đưa ra thách thức trong những tình huống 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 xác thực để mở cửa nếu thiết bị điều khiển từ xa sử dụng công nghệ NFC không ở gần cửa nhưng không đưa ra thử thách nếu có keyfob.

Assistant có thể đưa ra hai loại thử thách: mã xác nhận rõ ràng hoặc mã số nhận dạng cá nhân (PIN). Điều này sẽ thêm khối thử thách đối với ý định QUERYEXECUTE được gửi từ Assistant trở lại hành động của bạn và chấp nhận lỗi challengeNeeded của bạn. Sau đó, Assistant gửi lại yêu cầu ý định đến hành động của mình với dữ liệu về 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 đã cung cấp mức độ bảo mật chính xác hay chưa của bạn.

Assistant sử dụng hộp thoại để đưa ra thử thách, 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, mã PIN và trên màn hình.

Loại thiết bị được hỗ trợ

Phương thức xác minh thứ hai cho người dùng được hỗ trợ trên tất cả các loại thiết bị.

Trait được hỗ trợ của thiết bị

Quy trình xác minh người dùng thứ hai được hỗ trợ cho tất cả đặc điểm của 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 thứ hai.
  • ackNeeded – Xác minh người dùng phụ yêu cầu xác nhận rõ ràng (có hoặc không) và cũng có thể sử dụng các trạng thái trait như và phản hồi trong câu trả lời. Bạn không nên dùng loại thử thách này cho mục đích bảo mật thiết bị và đặc điểm kỹ thuật số.
  • pinNeeded – Quy trình xác minh người dùng phụ yêu cầu mã số nhận dạng cá nhân (PIN). Đây là mã số lý tưởng cho các thiết bị bảo mật và đặc điểm riêng của mình.

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 bật đèn.

User 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
          }
        }]
      }]
    }
  }]
}
Câu trả lời
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

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

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

Cần đơn giản

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

User Giảm độ sáng đèn phòng khách.
Google Assistant Tôi đang giảm độ sáng đèn phòng khách. Bạn có chắc chắn không?
User Có.
Google Assistant Tôi đang giảm độ sáng đè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"
    }]
  }
}

Cần có các trạng thái trait

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

Bạn cũng có thể đưa trạng thái vào câu trả lời để có Assistant thực hiện một hành động cụ thể dựa trên một hành động cụ thể của bạn.

Các đặc điểm và trạng thái sau đây hỗ trợ ackNeeded với các trạng thái trait. Đáp việc liệt kê một đặc điểm cụ thể cho biết rằng 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 có thử thách ackNeeded sử dụng trạng thái trait. Nút này chuyển chế độ điều hoà không khí sang chế độ sưởi ấm và đặt nâng nhiệt độ lên 28 độ. Sau đó, Assistant yêu cầu người dùng để xác nhận bật hệ thống sưởi và đặt nhiệt độ ở mức 28 độ vì thermostatTemperatureSetpoint của 28 được trả về dưới dạng trạng thái trong câu trả lời.

User Đặt chế độ AC ở chế độ sưởi ấm.
Google Assistant Bạn có chắc chắn muốn đặt nhiệt độ sưởi ấm trên điều hoà ở mức 28 không độ?
User Có.
Google Assistant Tôi đang đặt mức nhiệt trên điều hoà ở mức 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

Thử thách pinNeeded được đề xuất cho các thiết bị bảo mật.

Ví dụ này cho thấy yêu cầu và phản hồi ban đầu có pinNeeded thử thách. Ví dụ này trả về một phản hồi có thử thách pinNeeded, vì vậy Assistant 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 về mã PIN không chính xác hoặc hợp lệ:

User Mở khoá cửa.
Google Assistant Bạn có thể cho tôi biết mã bảo mật của bạn 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
          }
        }]
      }]
    }
  }]
}
Câu trả lờ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 có challengeFailedPinNeeded thử thách. Thử thách này nên được sử dụng sau thử thách pinNeeded ban đầu không thành công.

Khi một loại challengeFailedPinNeeded được trả về, Assistant yêu cầu cấp mã bảo mật một lần nữa. 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ề tooManyFailedAttempts của bạn. Hãy xem mục Phản hồi lỗi.

User 333222
Google Assistant Rất tiếc, mã bảo mật không chính xác. Bạn có thể cho tôi biết mã bảo mật của bạn 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"
          }
        }]
      }]
    }
  }]
}
Câu trả lờ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ệ.

User 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"
          }
        }]
      }]
    }
  }]
}
Câu trả lời
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
User Giảm độ sáng đèn phòng khách.
Google Assistant Bạn có thể cho tôi biết mã bảo mật của bạn 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
          }
        }]
      }]
    }
  }]
}
Câu trả lời
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Phản hồi lỗi

Dưới đâ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, đã có quá nhiều lần thử không thành công. Vui lòng chuyển đến ứng dụng của thiết bị để hoàn tất thao tác đó.
  • pinIncorrectRất tiếc, mã bảo mật không chính xác.
  • userCancelled (Người dùng đã huỷ) – Ok

Xem toàn bộ danh sách lỗi và ngoại lệ.