Во время многооборотного разговора с моделью диалога намерение остается тем же , когда слоты заполняются или во время подтверждения намерений / слотов.Теперь, когда пользователь говорит «Повторить» , Alexa сопоставляет его с RepeatIntent
(если у вас нет «повтор» в качестве высказывания в том же самом намерении).Теперь вам нужно извлечь слот с другим намерением (исходным намерением) из обработчика повторного намерения.К сожалению, на данный момент вы не можете сделать это.Только обновленное намерение того же типа может быть отправлено с директивой Dialog.ElicitSlot
.
Обратите внимание, что вы не можете изменить намерения при возврате директивы Dialog, поэтому имя намерения и наборСлоты должны соответствовать цели, отправленной вашему умению.
Если вы попытаетесь это сделать, вы получите сообщение об ошибке.
Решение -
- Сохранить состояние и достигнутый прогресс с помощью
IntentA
. - (
RepeatIntent
или любое другое намерение вызывается и отправляется ответ) - Повторно активировать оригинал
IntentA
с соответствующим высказыванием. - Восстановление состояния и достигнутого прогресса.
Вы можете сохранить состояние в sessionAttributes
и повторно вызвать IntentA
, который вы должны предоставитькакое-то высказывание, которое вызовет это.В вашем случае что-то вроде
"I would like to depart from {city}"
or just (if it doesn't break your VUI)
"{city}"
Таким образом, пользователь может легко переключать контекст в середине разговора и возвращаться.После повторного запуска намерения вы можете использовать любые директивы модели Dialog.
Читать это сообщение в блоге для получения дополнительной информации о переключении контекста.
Подробнее об интерфейсе диалога здесь .