Как проверить и получить значение слота Alexa с помощью Python ask sdk - PullRequest
0 голосов
/ 11 января 2019

В моей модели взаимодействия я определил слот с именем city, который является необязательным, не обязательным для выполнения намерения.

Я использую python ask sdk, поэтому мой обработчик такой:

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

Как я могу проверить, был ли заполнен слот пользователем, и как я могу получить его значение?

1 Ответ

0 голосов
/ 11 января 2019

В вашем обработчике вы можете сделать что-то вроде этого:

slots = handler_input.request_envelope.request.intent.slots
city = slots['city']
if city.value:
    # take me down to the paradise city
else:
    # this city was not built on rock'n'roll

slots - это словарь значений str: Slot, см. Исходный код для Intent и Slot для получения дополнительной информации.

...