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 cơ chế bảo mật yếu tố thứ hai vào lệnh thoại. Tính năng này giúp bạn tăng cường bảo mật cho một số hành động như tắt camera an ninh hoặc mở cửa. Quy trình xác minh người dùng phụ không gắn liề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 yêu cầu Google Assistant đưa ra thử thách. Ví dụ: bạn có thể chọn đưa ra thử thách cho đặc điểm OnOff của camera bảo mật, nhưng không đưa ra thử thách đối với đặc điểm OnOff đối với đèn. Bạn cũng có thể gặp phải các thử thách vấn đề Assistant trong một số 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 thử thách mở cửa nếu khoá từ xa NFC không ở gần cửa đó, nhưng không được đặt thử thách nếu có.

Assistant có thể đưa ra 2 loại thử thách – xác nhận rõ ràng hoặc mã 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 ý định đến hành động của bạn cùng 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 đã đưa ra phản hồi bảo mật chính xác hay chưa.

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 bằng giọng nói, thì mã PIN và thông báo xác nhận sẽ hoàn tất 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 phụ.
  • ackNeeded – Quy trình xác minh thứ hai dành cho 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 các trạng thái trait làm phản hồi phản hồi. Bạn 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 – Quy trình xác minh thứ hai dành cho người dùng 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ị 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 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 phụ người dùng có thể sử dụng nhiều trạng thái cho một đặc điểm hoặc cho một quy trình 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 với thử thách ackNeeded giảm độ sáng và thông báo 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
          }
        }]
      }]
    }
  }]
}
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 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 một đặc điểm. Ví dụ: nếu bạn đang làm việc với đặc điểm TemperatureSetting và cả thermostatModethermostatTemperatureSetpoint đều được đặt, Assistant có thể hỏi Bạn có chắc chắn muốn đặt nhiệt độ sưởi ấm trên máy điều hoà ở mức 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 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 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 đặ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. Tính năng này sẽ chuyển chế độ điều hoà không khí sang chế độ sưởi ấm và đặt nhiệt độ ở mức 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 độ ở mức 28 độ vì thermostatTemperatureSetpoint của 28 được trả về dưới dạng trạng thái trong phản hồi.

User Đặt chế độ AC ở chế độ sưởi ấm.
Google Assistant Bạn có chắc chắn muốn đặt mức nhiệt trên điều hoà ở mức 28 độ không?
User Có.
Google Assistantnt 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"
          }
        }]
      }]
    }
  }]
}
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ử 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ã 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ó thử thách 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 một 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, bạn có thể trả về một phản hồi lỗi tooManyFailedAttempts. 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 danh sách đầy đủ các lỗi và ngoại lệ.