AMAZON.YesIntent
или AMAZON.NoIntent
будут срабатывать всякий раз, когда пользователь говорит «да» или «нет», и могут возникнуть другие вопросы, которые могут иметь «да» или «нет» в качестве ответа.Вы можете определить или отследить, что было задано ранее или контекст разговора, используя sessionAttributes
.
Используя атрибуты сеанса
Представьте свое мастерствос "states"
.Каждый многоуровневый разговор имеет состояние, а состояние означает контекст вашего разговора или то, о чем вы говорите.Поэтому, когда есть разговор, вы устанавливаете состояние / контекст в sessionAttributes
, чтобы при поступлении следующего запроса вы предпринимали действия на основе state
.
Пример:
User: What should I eat?
[SelectFoodIntent is triggered]
[SelectFoodIntent handler receives this request]
[SelectFoodIntent can set usefull information like]
"sessionAttribute": {
"state":"SELECT_FOOD",
"givenChoice":"pasta"
}
[SelectFoodIntent sends the response back with the sessionAttribute]
Alexa: "Do you want to eat pasta?"
User: no
[AMAZON.NoIntent is triggered]
Когда запрос поступит в ваш бэкэнд, вы получите все sessionAttributes
, которые вы установили ранее, и с этим вы можете определить, что state
равно "SELECT_FOOD"
так что это "НЕТ" для макаронных изделий.Теперь вы можете ответить другим продуктом и установить sessionAttributes
соответственно.
"sessionAttribute": {
"state":"SELECT_FOOD",
"givenChoice":"Noodle"
}
Alexa: What about some noodle?
User: Yes
AMAZON.YesIntent
срабатывает и с помощью sessionAttributes
вы знаете, что это «Да» для «Лапша».
Подход состоит в том, чтобы сначала рассмотреть state
, а внутри него есть цели , которые необходимы.И одно и то же намерение может быть использовано в разных состояниях, таких как AMAZON.YesIntent
или AMAZON.NoIntent
.Таким образом, у вас будет набор обработчиков намерений для каждого состояния, которые будут запускаться только для этого конкретного состояния.
Помните, что также может быть запрос без state
, поэтому убедитесь, что ваш код обрабатывает его тоже.
Пример:
+-----------------+------------------+---------------------+
| State | FOOD_SELECT | PLACE_ORDER |
+-----------------+------------------+---------------------+
| Inetnt Handlers | AMAZON.YesIntent | AMAZON.YesIntent |
+ +------------------+---------------------+
| | AMAZON.NoIntent | AMAZON.NoIntent |
+ +------------------+---------------------+
| | | SelectAddressIntent |
+-----------------+------------------+---------------------+
Проверьте ASK-nodejs-1042 * SDK *.Это поможет вам достичь этого с гораздо меньшими усилиями по разработке.