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

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

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). Thử thách này sẽ thêm một khối thử thách vào QUERYEXECUTE ý định đượ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 challengeNeedederror. Assistant sau đó gửi lại yêu cầu ý định đến 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 dùng giọng nói, thì mã PIN và thông tin xác nhận sẽ được thực hiện trên màn hình.

Thời điểm sử dụng bước thứ hai để xác minh người dùng

Bạn có thể bật bước thứ hai để xác minh người dùng cho mọi loại thiết bị hoặc đặc điểm. Tuy nhiên, bạn phải triển khai bước thứ hai để xác minh người dùng đối với một số loại thiết bị và đặc điểm nhạy cảm về bảo mật để được chứng nhận tích hợp.

Bạn phải sử dụng bước thứ hai để xác minh người dùng bằng loại thử thách pinNeeded cho các tổ hợp đặc điểm và loại thiết bị sau:

  • Đặc điểm OnOff nếu loại thiết bị là CAMERA.
  • Đặc điểm OpenClose nếu loại thiết bị là DOOR, GARAGE, GATE hoặc WINDOW.
  • Đặc điểm LockUnlock khi mở khoá.
  • Đặc điểm ArmDisarm khi tắt chuông báo động hoặc huỷ tắt chuông báo động.
  • Đặc điểm Reboot, SoftwareUpdate hoặc NetworkControl nếu loại thiết bị là NETWORK hoặc ROUTER.

Bạn phải sử dụng loại thử thách ackNeeded cho đặc điểm TemperatureSetting nếu loại thiết bị là AC_UNIT và quá trình tích hợp diễn ra ở Nhật Bản.

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

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

  • 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 thứ hai cho người dùng.
  • ackNeeded – bước thứ hai để 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 đặc điểm làm ý kiến 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 – Bước thứ hai để xác minh người dùng yêu cầu 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ử thách

Ví dụ này cho thấy 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.
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

Thử thách xác thực thứ hai cho người dùng có thể sử dụng nhiều trạng thái cho một đặc điểm hoặc thử thách xác thực đơ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 yêu cầu và phản hồi đơn giản với thử thách ackNeeded để làm mờ đèn và xác nhận làm mờ đèn.

Người dùng Làm mờ đèn phòng khách.
Google Assistant Đang làm mờ đèn phòng khách. Bạn có chắc không?
Người dùng Có.
Google Assistant Đang làm mờ đè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 có trạng thái đặc điểm

Thử thách xác thực thứ hai cho người dùng có thể sử dụng 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 độ trên máy điều hoà ở 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 có trạng thái đặc điểm. Danh sách 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ợ.

  • ArmDisarm
    • Sử dụng loại thử thách ackNeeded để bật chuông báo động hoặc huỷ bật chuông báo động thiết bị, nhưng đối với các chức năng tắt chuông báo động và huỷ tắt chuông báo động, bạn phải sử dụng loại thử thách pinNeeded được yêu cầu.
  • Fill
  • LockUnlock
    • Sử dụng loại thử thách ackNeeded để khoá thiết bị và loại thử thách pinNeeded để mở khoá.
  • OnOff
    • on
    • Sử dụng loại thử thách ackNeeded cho đặc điểm này. Bạn phải sử dụng loại thử thách pinNeeded khi sử dụng đặc điểm này với các thiết bị CAMERA.
  • OpenClose
    • Sử dụng loại thử thách ackNeeded cho đặc điểm này. Bạn phải sử dụng loại thử thách pinNeeded khi sử dụng đặc điểm này với các thiết bị DOOR, GARAGE, GATE hoặc WINDOW.
  • Scene
  • TemperatureSetting
    • thermostatMode
    • thermostatTemperatureSetpoint
    • thermostatTemperatureSetpointHigh
    • thermostatTemperatureSetpointLow

Ví dụ này cho thấy 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. Thử thách này sẽ thay đổi chế độ máy điều hoà 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 độ 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 hoà không khí thành chế độ sưởi ấm.
Google Assistant Bạn có chắc chắn muốn đặt nhiệt độ trên máy điều hoà ở mức 28 độ không?
Người dùng Có.
Google Assistant Đang đặt 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"
          }
        }]
      }]
    }
  }]
}
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 yêu cầu và phản hồi ban đầu với thử thách pinNeeded. Ví dụ này trả về phản hồi với 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 chính xác.

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

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 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 loại challengeFailedPinNeeded được trả về, Assistant yêu cầu lại mã bảo mật. Nếu người dùng thử quá nhiều lần 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 chính xác

Ví dụ này cho thấy yêu cầu và phản hồi của mã PIN chính xác.

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 Làm mờ đè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 đã có quá nhiều lần thử không thành công. Vui lòng mở ứng dụng trên thiết bị của bạn để hoàn thành thao tác đó.
  • pinIncorrectRất tiếc, mã bảo mật này không chính xác.
  • userCancelled - Ok

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