Я хочу заполнить slot
не в начале вызова намерения, а в более поздней части запроса намерения . Я хочу предоставить пользователю некоторые варианты, и я хочу, чтобы они выбрали один из них. Для этого я пытаюсь использовать Dialog.ElicitSlot
, но почему-то получаю сообщение об ошибке:
"Запрос к конечной точке умения привел к ошибке."
Я возвращаю это, когда мне нужно, чтобы пользователь выбрал опцию из моего списка.
return {
"version": "1.0",
"sessionAttributes": {},
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "These are the multiplex" + ("es" if len(multi_list) > 1 else "") + " " + outputSpeech + ". Please select one out of these."
# outputSpeech contains the list of options I want the user to select from
},
"shouldEndSession": False,
"directives": [
{
"type": "Dialog.ElicitSlot",
"slotToElicit": "MULTIPLEX",
"updatedIntent": {
"name": "GetMovieDetails",
"confirmationStatus": "NONE",
"slots": {
"CITY" : {
"name" : "CITY",
"confirmationStatus" : "NONE",
"value" : city # this is already filled, it is just anti-capitalised
},
"NAME" : {
"name" : "NAME",
"confirmationStatus" : "NONE",
"value" : movie_name # this is already filled, it is just anti-capitalised
},
"MULTIPLEX" : {
"name" : "MULTIPLEX",
"confirmationStatus" : "NONE",
}
}
}
}
]
}
Я проверяю свой навык, используя python-lambda-local
, он отлично работает на моей локальной машине (мне просто нужно было вручную изменить dialogState
на "COMPLETED"
, как здесь ). Возвращает все написанное выше. Но он выдает ошибку при тестировании на Skill Tester. Здесь - это результат, который возвращается в Skill Tester.
PS: я не установил флажок заполнения слотов в разделе сборки. (Поскольку мне нужно заполнить слот позже), и здесь - полный код на всякий случай.