Chào mừng bạn đến với Trung tâm nhà phát triển Google Home, một điểm đến mới để tìm hiểu cách phát triển các hành động nhà thông minh. Lưu ý: Bạn sẽ tiếp tục tạo các hành động trong Bảng điều khiển Actions.

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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Tính năng xác minh người dùng phụ 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 cho phép bạn tăng cường bảo mật cho một số thao tác như tắt máy quay an ninh hoặc mở cửa. Việc xác minh người dùng phụ không gắn với đặc điểm cụ thể nào của thiết bị. Điều này cho phép bạn quyết định thời điểm yêu cầu Trợ lý Google đặt ra thử thách. Ví dụ: bạn có thể chọn đưa ra thử thách đối với đặc điểm OnOff cho máy ảnh an ninh, nhưng không đưa ra thử thách đối với đặc điểm OnOff cho đèn. Bạn cũng có thể gặp sự cố khi dùng Trợ lý Google trong một số tình huống nhất định cho cùng một thao tác. Ví dụ: bạn có thể yêu cầu Trợ lý Google đưa ra yêu cầu xác thực để mở cửa nếu bàn phím NFC không ở gần cửa đó, nhưng không đưa ra thử thách nếu có bàn phím.

Trợ lý Google có thể đưa ra hai loại thách thức – 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 ý định QUERYEXECUTE được gửi từ Trợ lý Google trở lại thao tác và chấp nhận phản hồi lỗi challengeNeeded. Sau đó, Trợ lý Google sẽ gửi lại yêu cầu ý định đến thao tác của bạn cùng với dữ liệu thử thách trong khối thử thách. Sau đó, bạn có thể xác thực dữ liệu xác thực để 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.

Trợ lý Google sử dụng hộp thoại để đưa ra thử thách, nhưng nếu bạn sử dụng Trợ lý Google trên các nền tảng không phải giọng nói, thì mã PIN và thông báo 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 phụ được hỗ trợ trên tất cả các loại thiết bị.

Các đặc điểm thiết bị được hỗ trợ

Tính năng xác minh người dùng phụ được hỗ trợ 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 phụ được hỗ trợ:

  • Không 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 – Cần 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 đặc điểm 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 – 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), lý tưởng cho các thiết bị và đặc điểm bảo mật.

Không có thách thức nào

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.
Trợ lý Google Đượ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
      }
    }]
  }
}

Cần

Quy trình xác thực người dùng phụ có thể sử dụng nhiều trạng thái cho một đặc điểm hoặc 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 kèm theo thử thách ackNeeded để giảm độ sáng và xác nhận giảm độ sáng.

User Giảm độ sáng của đèn phòng khách.
Trợ lý Google 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ó.
Trợ lý Google 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
          }
        }]
      }]
    }
  }]
}
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
          }
        }]
      }]
    }
  }]
}
Câu trả lời 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

Thiếu cần có trạng thái đặc điểm

Phương thức xác thực người dùng phụ có thể sử dụng trạng thái cho một đặc điểm. Ví dụ: nếu bạn đang xử lý đặc điểm temperatureSetting và cả thermostatModethermostatTemperatureSetpoint đều được đặt, thì Trợ lý Google có thể hỏi Bạn có chắc chắn muốn sưởi ấm trên máy điều hòa ở mức 28 độ không?

Bạn cũng có thể đưa một trạng thái vào phản hồi để Trợ lý Google thực hiện một thao tác 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ùng với các trạng thái đặc điểm. Trang thông tin của một đặc điểm cụ thể cho biết rằng tất cả các trạng thái của tính năng đó đều được hỗ trợ.

Ví dụ này cho thấy một yêu cầu và phản hồi kèm theo thử thách ackNeeded sử dụng trạng thái đặc điểm. Nó thay đổi chế độ điều hòa nhiệt độ thành sưởi ấm và đặt nhiệt độ ở mức 28 độ. Sau đó, Trợ lý Google yêu cầu người dùng xác nhận việc bật chế độ sưởi ấm và đặt nhiệt độ ở mức 28 độ trễ vì thermostatTemperatureSetpoint của 28 được trả về dưới dạng trạng thái trong phản hồi.

User Chuyển chế độ điều hòa nhiệt độ sang chế độ sưởi ấm.
Trợ lý Google Bạn có chắc muốn đặt nhiệt độ trên máy điều hòa ở mức 28 độ không?
User Có.
Trợ lý Google Tôi đang đặt nhiệt độ của máy điều hòa ở 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
          }
        }]
      }]
    }
  }]
}
Câu trả lời 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

cần có pin

Thử thách pinNeeded được đề xuất 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 kèm theo một thử thách pinNeeded. Ví dụ này sẽ trả về một phản hồi kèm theo thử thách pinNeeded, vì vậy, Trợ lý Google sẽ yêu cầu ghim. Tại thời điểm này, người dùng có thể cung cấp ghim không chính xác hoặc hợp lệ.

Yêu cầu và phản hồi mẫu đối với mã PIN không chính xác hoặc hợp lệ:

User Mở khoá cửa.
Trợ lý Google Bạn có thể cho tôi biết mã bảo mật 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 kèm theo 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ề, Trợ lý Google 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 Phản hồi lỗi.

User 333222
Trợ lý Google 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 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 hợp lệ

Ví dụ này cho thấy yêu cầu và phản hồi về mã PIN hợp lệ.

User 333444
Trợ lý Google Đ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
      }
    }]
  }
}
User Giảm độ sáng của đèn phòng khách.
Trợ lý Google Bạn có thể cho tôi biết mã bảo mật 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

Dưới đây là một số mã lỗi có thể được trả về kèm theo phản hồi của bạn:

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

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