In my interaction model I defined a slot named city
that is optional, not required, to fulfill an intent.
I'm using the python ask sdk, so my handler is this:
class IntentHandler(RequestHandler):
"""
Intent handler
"""
def can_handle(self, handler_input):
# type: (HandlerInput) -> bool
return is_request_type("IntentRequest")(handler_input) and \
is_intent_name("ExampleIntent")(handler_input)
def handle(self, handler_input):
# type: (HandlerInput) -> Response
access_token = handler_input.request_envelope.context.system.user.access_token
if access_token is None:
raise Exception("no access_token provided")
speech = RESPONSE_MESSAGE_DEFAULT
handler_input.response_builder.speak(speech)
return handler_input.response_builder.response
How can I check if the slot was filled by the user and how can I get its value?
python {'animal': { 'confirmation_status': 'NONE', 'name': 'animal', 'resolutions': None, 'value': 'a dog'} }
Then I access this data by doing :python slots = handler_input.request_envelope.request.intent.slots print(slots) animal_slot = slots['animal'] animal = animal_slot.value print(f"ANIMAL REQUESTED: {animal}")
– Yezd