(Алекса) Можно ли получить ответ в том же обработчике намерений?
У меня есть собственный навык Alexa Skill, похожий на некоторые навыки Q&A, в которых я прошу пользователя ответить (скажем, option_1, option_2, option_3), но когда пользователь отвечает одним из этих запрошенных вариантов, другое намерение (скажем, ruleIntent) запускается, потому что текст варианта несколько похож на его высказывания.
Я думаю, что это не лучший дизайн, если для одной и той же (или похожей) фразы запускается более одного IntentHandler, но тогда я не знаю заранее текст параметров, чтобы этого избежать (или то, что пользователь собирается высказать как ответ на заданный вопрос). Что, если я смогу каким-то образом поддерживать контекст ответа пользователя, я думаю, это будет одним из решений.
Пример: -
1.User : Start a Science test {Invokes testIntent }.
2.Alexa : Okay, but before starting do you want to know the rules. Please answer in Yes or No. { response generated from testIntentHandler}
3.User : Yes { invokes many intents }
В строке 3, даже если я жестко закодировать это к Intent (скажем ruleIntent), то что произойдет, если какой - то вопрос содержит свои варианты, как Да или Нет. Как мне это различить и сопоставить с ответом на заданный вопрос.
2 ответа
Один из способов справиться с этим - отслеживать состояние с помощью постоянных атрибутов или атрибутов сеанса.
Вы можете выполнить проверку состояния в методе canhandle, чтобы направить пользователя к соответствующему тесту.
Один из способов решить эту проблему - использовать диалоги. Вы можете использовать автоматическое делегирование для диалогов
Включите автоматическое делегирование для всего навыка или для конкретных целей. В этом случае Alexa выполняет все шаги диалога на основе вашей модели диалога. Alexa отправляет вашему умению один IntentRequest, когда диалог завершен.