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

Tính năng xác minh người dùng thứ hai cho phép bạn thêm lớp bảo mật thứ hai vào các lệnh thoại. Nhờ đó, bạn có thể 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 thứ hai không liên kết 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 yêu cầu xác minh. Ví dụ: bạn có thể chọn đưa ra một thử thách cho đặc điểm OnOff đối với camera an ninh, nhưng không đưa ra thử thách cho đặc điểm OnOff đối với đèn. Bạn cũng có thể 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á NFC không ở gần cửa đó, nhưng không đưa ra yêu cầu thử thách nếu chìa khoá ở gần.

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ử thách vào các ý định QUERYEXECUTE được gửi từ Assistant trở lại thao tác 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 về ý định cho hành động của bạn kèm theo 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 thử thách, nhưng nếu bạn sử dụng Assistant trên các nền tảng không có giọng nói, thì mã PIN và bước 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ợ

Tính năng xác minh người dùng bổ sung được hỗ trợ trên mọi loại thiết bị.

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

Chúng tôi hỗ trợ xác minh người dùng phụ cho tất cả cá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 bổ sung đượ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 thứ hai để xác minh người dùng, yêu cầu người dùng phải 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 thông tin phản hồi. Không nên 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), phù hợp với 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 để bật đèn.

Người dùng Bật đèn.
Google Assistant Được rồi, tôi đang bật 3 đèn.
{
  "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
          }
        }]
      }]
    }
  }]
}
{
  "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 xác nhận của người dùng phụ có thể sử dụng nhiều trạng thái cho một đặc điểm hoặc phương thức xác thực xác nhận đơn giản.

Sau đây là các loại thử thách ackNeeded:

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 một thử thách ackNeeded để làm mờ đèn và xác nhận làm mờ đèn.

Người dùng Giảm độ sáng của đèn phòng khách.
Google Assistant Tôi đang 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 Tôi đang giảm độ sáng của đèn phòng khách.
{
  "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
          }
        }]
      }]
    }
  }]
}
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
{
  "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
          }
        }]
      }]
    }
  }]
}
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

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

Phương thức xác thực xác nhận của 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 đặc điểm TemperatureSetting và cả thermostatMode lẫn thermostatTemperatureSetpoint đều được đặt, thì Assistant có thể hỏi Bạn có chắc chắn muốn đặt nhiệt độ của máy điều hoà không khí ở mức 28 độ không?

Bạn cũng có thể đưa một trạng thái vào phản hồi để 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 bằng trạng thái đặc điểm. Danh sách về 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 đặc điểm. Lệnh này sẽ thay đổi chế độ của máy điều hoà không khí thành chế độ sưởi 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 độ ở mức 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 hoà không khí ở chế độ sưởi ấm.
Google Assistant Bạn có chắc chắn muốn đặt chế độ sưởi của máy điều hoà ở mức 28 độ không?
Người dùng Có.
Google Assistant Tôi đang đặt mức nhiệt trên điều hoà ở 28 độ.
{
  "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"
          }
        }]
      }]
    }
  }]
}
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
{
  "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
          }
        }]
      }]
    }
  }]
}
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

Bạn nên 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 yêu cầu mã PIN. Tại thời điểm này, người dùng có thể cung cấp một 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?
{
  "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
          }
        }]
      }]
    }
  }]
}
{
  "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 một loại challengeFailedPinNeeded được trả về, Assistant sẽ yêu cầu 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ề một 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?
{
  "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"
          }
        }]
      }]
    }
  }]
}
{
  "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.
{
  "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"
          }
        }]
      }]
    }
  }]
}
{
  "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?
{
  "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
          }
        }]
      }]
    }
  }]
}
{
  "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 các phản hồi của bạn:

  • tooManyFailedAttemptsXin lỗi, bạn đã thử quá nhiều lần 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 đủ các lỗi và trường hợp ngoại lệ.