Как вернуться к цели после ответа Да или Нет - PullRequest
0 голосов
/ 19 января 2019

Я сделал свой навык, чтобы вы могли начать новую игру. Хотя, если у пользователя есть игра в сеансе или он хочет начать новую игру, у меня есть переменная сеанса, которая game_in_progress. Это говорит, "There is a game in progress, would you like to contiune?"

Как я могу сопоставить это с другим намерением или проверить в Yes Intent, происходит ли это из какого-то намерения?

Вот что у меня есть

@sb.request_handler(can_handle_func=is_intent_name("AMAZON.StartOverIntent"))
def start_over_intent_handler(handler_input):
    # Check if game in play
    session_attr = handler_input.attributes_manager.session_attributes

    game_in_progress = int(session_attr['game_in_progress'])

    if game_in_progress == 1:
        speech_text = f"""
                        You have a game in progress would you like to continue?
                       """

Имейте в виду, что мое ДА намерение будет использовано позже для других целей. Как я могу определить, что я специально сказал ДА из этого намерения начать новую игру?

Я посмотрел его в Интернете, некоторые люди устанавливают состояние и затем объявляют другое намерение ДА с state != or == {YourState} - я не знаю, работает ли это или даже это правильный способ сделать это.

Я делаю это в Python, используя декораторы.

Ответы [ 2 ]

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

Обработка этого с помощью sessionattributes сделает код неуклюжим, так как вам придется писать все, если еще в yesnohandler.

Лучше, если бы вы могли использовать стек для отслеживания вызываемых обработчиков.

Когда вы задаете пользователю вопрос «да», вы помещаете объект класса обработчика в стек.Теперь, когда пользователь ответил yesno, вы берете объект-обработчик, который доступен поверх стека, и вызываете его правильный метод.

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

AMAZON.YesIntent будет срабатывать всякий раз, когда пользователь говорит «да» , и могут возникнуть другие вопросы, которые могут иметь « да» в качестве ответа.Как разработчик, вы можете контролировать, какие вопросы или ответы задают / дают.Отслеживание вопросов / ответов с помощью sessionAttributes поможет вам выяснить, что пользователь сказал «да».

Пример: использовать атрибут сеанса «question_type»

Alexa: "There is a game in progress, would you like to continue?"  
[question_type = “continue_session”]
User: “yes”

Теперь, когда обработчик AMAZON.YesIntent запущен, вы можете проверить question_type sessionAttribute, чтобы предпринять соответствующие действия на вашем бэкэнде.

Короче говоря, ответом будет эффективное использование sessionAttirbutes для определения контекста / состояния разговора.

...