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

Phương thức xác minh thứ hai khi xác minh người dùng cho phép bạn thêm tính năng bảo mật yếu tố thứ hai vào lệnh thoại. Điều này giúp bạn 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 phụ cho người dùng không liên quan đến 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 thử thách. Ví dụ: bạn có thể chọn đưa ra thử thách đối với trait OnOff đối với máy ảnh bảo mật, nhưng không thử thách đối với đặc điểm OnOff đối với ánh sáng. Bạn cũng có thể đưa ra các thử thách đặt ra vấn đề Assistant trong một số tình huống 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 khoá điều khiển từ khoá NFC không ở gần cửa đó, nhưng không đặt ra yêu cầu xác thực nếu có khoá điều khiển từ xa.

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 các ý định QUERYEXECUTE được gửi từ Assistant về 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 bằng 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 phản hồi bảo mật chính xác hay không.

Assistant 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 là giọng nói, thì mã PIN và xác nhận sẽ được thực hiện trên màn hình.

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

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

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

Phương thức xác minh thứ hai khi xác minh người dùng được hỗ trợ cho tất cả các trait của thiết bị.

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

Dưới đây là các loại thử thách xác minh phụ khi xác minh người dùng được hỗ trợ:

  • Không có thử thách nào – Một 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 – Phương thức xác minh thứ hai khi xác minh người dùng 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 trait làm phản hồi phản hồi. Loại thử thách này không được khuyên dùng cho các thiết bị và trait bảo mật.
  • pinNeeded – Phương thức xác minh người dùng phụ yêu cầu phải có mã số nhận dạng cá nhân (PIN), lý tưởng cho các thiết bị và đặc điểm bảo mật.

Không có thách thức

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 gặp khó khăn khi 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 xác nhận người dùng phụ có thể sử dụng nhiều trạng thái cho một trait hoặc xác thực xác nhận đơn giản.

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

đơn giản cần xác nhận

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

User 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?
User Có.
Google Assistant Tôi đang 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
          }
        }]
      }]
    }
  }]
}
Câu trả lờ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 xác nhận bằng các trạng thái đặc điểm

Phương thức xác thực xác nhận phụ của người dùng 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 trait TemperatureSetting, đồng thời đặt cả thermostatModethermostatTemperatureSetpoint, Assistant có thể hỏi Bạn có chắc chắn muốn đặt nhiệt độ sưởi ấm của máy điều hoà thành 28 độ không?

Bạn cũng có thể đưa 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 yêu cầu nhất định.

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

User Đặt chế độ điều hoà không khí ở chế độ sưởi ấm.
Google Assistant Bạn có chắc chắn muốn đặt nhiệt độ sưởi ấm của máy điều hoà ở 28 độ không?
User Có.
Google Assistantnt Tôi đang đặt mức nhiệt trên máy đ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"
          }
        }]
      }]
    }
  }]
}
Câu trả lờ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ó thách thức pinNeeded. Ví dụ này trả về 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ệ:

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 đượ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
          }
        }]
      }]
    }
  }]
}
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ó thách thức challengeFailedPinNeeded. Thử thách này nên được sử dụng sau khi thử thách pinNeeded ban đầu không thành công.

Khi loại challengeFailedPinNeeded được trả về, Assistant sẽ yêu cầu 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, thì bạn có thể trả về phản hồi lỗi tooManyFailedAttempts. Xem phần 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 đượ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"
          }
        }]
      }]
    }
  }]
}
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 Tôi đ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 của đè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 đượ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
          }
        }]
      }]
    }
  }]
}
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

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

  • challengeFailedNotSetupThao tác này yêu cầu mã bảo mật nhưng mã bảo mật chưa được thiết lập trong ứng dụng trên thiết bị của bạn.
  • tooManyFailedAttemptsRất tiếc, bạn đã nhập sai quá nhiều lần. Vui lòng truy cập vào ứ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 không chính xác.
  • userCancelledOK.

Xem danh sách đầy đủ lỗi và trường hợp ngoại lệ.