У меня есть обработчик, который должен вызываться «да», «нет» или «повторить».На «нет» и «повторить» это работает абсолютно идеально.На «да» я получаю ошибку.Затем я проверяю Cloudwatch и он говорит, что не может найти подходящий обработчик.Однако, когда я тестирую в Lambda значение «да» в значении слота, оно отлично работает.
Что здесь может произойти?Есть ли какая-то причина, по которой «да» не должно сработать?Что-то связанное с AMAZON.YesIntent, может быть?
Вот фрагмент из моей модели взаимодействия намерений:
{
"name": "RoundingVerifyIntent",
"slots": [
{
"name": "RoundingVerify",
"type": "ROUNDING_VERIFY"
}
],
"samples": [
"{RoundingVerify}"
]
},
А вот детали типа слота:
{
"name": "ROUNDING_VERIFY",
"values": [
{
"name": {
"value": "no",
"synonyms": [
"that's wrong",
"wrong",
"nah",
"noooo",
"no way",
"nope",
"nah"
]
}
},
{
"name": {
"value": "yes",
"synonyms": [
"correct",
"that's correct",
"yop",
"yup",
"yep",
"yeah"
]
}
},
{
"name": {
"value": "repeat",
"synonyms": [
"pardon me",
"say again",
"repeat again"
]
}
}
]
},
ОБНОВЛЕНИЕ: Я попытался добавить директиву elicit slot, чтобы подтолкнуть прямо в желаемое намерение и извлечь слот и при этом сохранить то же поведение ... любая помощь приветствуется.
UPDATE2: Хорошо, я получилэто работает после того, как я отредактировал директиву.Это заставило его работать.
.addDirective({
"type": "Dialog.ElicitSlot",
"slotToElicit": "RoundingVerify",
"updatedIntent": {
"name": "RoundingVerifyIntent",
"confirmationStatus": "NONE",
"slots": {
"RoundingVerify": {
"name": "RoundingVerify",
"value": "yes",
"resolutions": {},
"confirmationStatus": "NONE"
}
}
}
})
Я предполагал, что если я добавлю туда значение, оно автоматически установит его на да, а это не то, чего я хочу ... но по какой-то причине он ждет ввода пользователя,Может кто-нибудь сказать мне, почему это так?
Большое спасибо.
Все еще убежден, что мой первый метод должен был сработать и может быть ошибка, но это, по общему признанию, лучшее решение.