Amazon Lex - переключение намерений без ElicitSlot - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь переключить Intents без использования ElicitSlot. Причина в том, что мое следующее намерение не требует слотов или ввода данных пользователем.

В настоящее время я использую ElicitSlot. В намерении приветствия я установил слот Nums. В новостях я проверяю, существует ли слот 'Nums', и действую соответствующим образом. Однако это не работает, и все равно запрашивает Prompt для слота 'Nums'.

Текущие приветствия Intent: Выполнение

var sessionAttributes = intentRequest.sessionAttributes;
var slots = intentRequest.currentIntent.slots;

const num = slots.Num;

if(num == 1){
    str = 'News';
    intentRequest.currentIntent.name = 'News';
    intentRequest.currentIntent.slots = {
        Nums: 3
    }
    callback(close(sessionAttributes, str, intentRequest.currentIntent.slots, 'Nums'));
}

Current News Intent: лямбда-инициализация и проверка

if(!slots.Nums){
    slots.Nums = intentRequest.inputTranscript;
    callback(close(sessionAttributes, 'News', slots, 'Nums'));
}

if(slots.Nums){
    callback(close(sessionAttributes, 'News', slots, 'Displaying News...'));
}

Пример успешного диалога:

Пользователь : Привет

Бот : Приветствие: (1) Новости (2) Вариант 2 (3) Вариант 3

Пользователь : 1

Бот : отображение новостей ...

1 Ответ

0 голосов
/ 10 февраля 2020

В настоящее время это невозможно с Lex + Lambda. Поскольку вы можете вызвать другое намерение с помощью голоса / слов, при использовании этого меню для DTMF / di git я осознаю необходимость.

Один из способов - вызвать «Показать новости» Собирайтесь кодировать себя. Поскольку пример кода является лямбда-кодом, вы можете управлять потоком этого кода, не полагаясь на то, что Lex будет его опосредовать.

if(num == 1){
    callback(close(sessionAttributes, 'News', slots, 'Displaying News...'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...