Вы должны быть в состоянии захватить его уже при условии, что ваше намерение правильно настроено в интерфейсе навыка.
Я не знаю точно, как настроен ваш навык или какой язык вы используете для разработки, поэтому я не могу сказать вам код для доступа к нему, но запрос JSON будет выглядеть примерно так:
"request": {
"type": "IntentRequest",
"intent": {
"name": "BuyIntent",
"confirmationStatus": "NONE",
"slots": {
"vehicleType": {
"name": "vehicleType",
"value": "bike",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "amzn1.er-authority.echo-sdk.[skill-id].vehicleType",
"status": {
"code": "ER_SUCCESS_NO_MATCH"
},
}
]
}
}
}
}
}
Если вы сможете понять, как получить доступ к свойству «значение» в вашем слоте для типов транспортных средств, вы получите значение, указанное пользователем! Вам просто нужно записать его в переменную и интерполировать в строку, которую вы отправляете обратно в Alexa, чтобы говорить.
Причина, по которой это работает даже без определенного типа слота, заключается в том, что Alexa фактически хранит два разных типа значения для слота. Одно из значений, о котором я упоминал ранее, хранит то, что на самом деле сказал пользователь. Второй находится в разделе «разрешения» слота и содержит значение типа слота, которое Alexa сопоставила с речью пользователя. Когда совпадений не найдено, Alexa по-прежнему возвращает слот со значением того, что сказал пользователь, и устанавливает код состояния разрешения на «ER_SUCCESS_NO_MATCH», что означает, что соответствующий тип слота не найден.
Что касается того, почему ваш навык получает резервный запрос вместо одного для вашего намерения, я не могу сказать вам с информацией, которую вы предоставили, но отсутствие определенного типа транспортного средства для «байка» не является причиной. Есть ли у вас настроенное высказывание для намерения купить, которое соответствует фразе, которую вы используете для взаимодействия с навыком? Что-то вроде: "Я хочу купить {vehicleType}"
person
Josh Hadik
schedule
01.06.2018