Как заставить Alexa запрашивать у меня дополнительную информацию, если я пропустил параметр в своем высказывании? - PullRequest
0 голосов
/ 18 октября 2018

Как мне заставить Alexa подсказать мне (например, «Вы хотите погоду для какого города снова?»), Если я пропустил параметр (слот, т.е. название города) в своем высказывании?

IЯ делаю навык, который говорит мне погоду города.У меня есть высказывания, и это работает нормально, но когда я не определяю название города (city_name также является моим единственным слотом в моем намерении), тогда оно напрямую идет к прекращению намерения и выдает мое сообщение «Alexa не может помочь вам с этим».

В моем слоте (city_name) я даже проверил "Требуется ли этот слот для выполнения намерения?"и заполнили запросы Alexa и пользовательские высказывания, но все равно это не работает.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы можете использовать различные директивы Dialog interface , чтобы запросить у пользователя информацию, необходимую для выполнения его запроса.Когда пользователь взаимодействует с вашим навыком, вы получаете запрос на свой сервер с отображенным намерением и заполненными (или незаполненными) слотами.Даже если вы используете диалоговую модель и заполнили все высказывания для каждого слота, вам придется ответить соответствующей директивой, чтобы продолжить.

Существует три способа обработки диалоговой модели:

1.Делегирование в Alexa
Вы можете использовать директиву Dialog.Delegate, чтобы Alexa определяла следующий шаг в диалоге, и использует запросы, которые вы определили в диалоговой модели, для извлечения значений слотов, подтверждения значений слотов или подтвержденияполное намерение.

Если у вас есть незаполненные слоты, просто верните директиву delegate, Alexa будет использовать подсказки, определенные в модели взаимодействия, чтобы заполнить этот слот.Пока свойство dialogState не равно COMPLETE, вы можете продолжить делегирование в Alexa.

После завершения разговора входящий IntentRequest имеет dialogState из COMPLETED.Вся необходимая информация теперь доступна в значениях слотов намерения.

Примечание: С директивой Dialog.Delegate вы не можете отправлять outputSpeech или reprompt из своего кода.Вместо этого будут использоваться те, которые определены в модели взаимодействия.А статус COMPLETED возможен только при использовании Dialog.Delegate.

2.Управление диалогом
В каждом ходу разговора вы можете взять управление и спросить, что вам нужно, вместо того, чтобы делегировать его в Alexa.Это полезно, особенно когда вы хотите, чтобы слоты были заполнены определенным ордером, или вы хотите подтвердить слоты по мере продвижения, или свойство «мандата» вашего слота имеет динамический характер и так далее.

Вы можете использовать директиву Dialog.ElicitSlot, чтобы запросить конкретный слот, Dialog.ConfirmSlot, чтобы подтвердить конкретный слот, и Dialog.ConfirmIntent, чтобы подтвердить само намерение.

3.Комбинация обоих
Когда вы получаете запрос о намерениях, вы можете вернуть директиву delegate или любую другую директиву по своему усмотрению.Даже если вы делегируете, в любой момент вы можете взять диалоговое окно вместо продолжения делегирования в Alexa.

Подробнее о другой директиве здесь

ПримерВзаимодействия:
1. Использование директивы delegate здесь
2. Использование директивы ElicitSlot здесь
3. Использование директивы ConfirmSlot здесь
4. Использование директивы ConfirmIntent здесь

0 голосов
/ 19 октября 2018

Использовать диалоги alexa .Диалог автоматически заполняет все необходимые слоты, повторно предоставляя пользователю значение пропущенного слота.Диалог имеет 3 состояния: STARTED, IN_PROGRESS, COMPLETED.Состояние диалога будет завершено, только если у вас заполнены все необходимые значения слотов.Смотреть учебник здесь

...