Спросите пользователя для ввода от LaunchIntent - PullRequest
0 голосов
/ 31 августа 2018

Я пишу навык в Node JS 8. У меня есть намерение со слотами, и оно работает правильно, если я говорю

Попросите {имя навыка} {высказывание}.

Я хотел бы разработать свой навык так, чтобы пользователь мог просто сказать

Открыть {имя навыка}

и при открытии он запросит у них ввод, который затем будет обработан и передан намерению. Я видел, как несколько человек говорили, что ты не можешь сделать это. Но сегодня я использовал 2 навыка, которые сделали именно это. Я просто ищу правильный синтаксис для этого.

У меня есть:

'LaunchRequest': function() {
   this.response.speak("What note would you like?");
   this.emit(':responseReady');
}

Кажется, это должно сработать, но я довольно новичок в JS и Alexa.

1 Ответ

0 голосов
/ 31 августа 2018

Да, это возможно.

Когда пользователь навыка открывает ваш навык, вы можете дать приветственное сообщение, за которым следует вопрос.
Пример:

[user]  : open note skill  
[Alexa] : Welcome to note skill. What note would you like?  
----------<Alexa will wait for users input>--------  
[user]  : ABC note.  
[Alexa] : <response>

Для того, чтобы Alexa ожидал ввода данных от пользователя после сообщения приветствия, вам нужно сохранить сеанс в живых. Сеанс сохраняется, основываясь на параметре shouldEndSession в ответе. Для любого запроса, если он не предоставлен, shouldEndSession по умолчанию true. В вашем случае для ответа LaunchRequest этот параметр shouldEndSession должен иметь значение false. Только когда сеанс остается открытым, и пользователи могут продолжать взаимодействие.

Ex:

'LaunchRequest': function() {
   const speech = "Welcome to note skill. What note would you like?";
   const reprompt = "What note would you like?";
   this.emit(':ask', speech, reprompt);
}

Прочтите этот ответ , чтобы узнать больше о том, как сохранить сеанс с помощью ask-nodejs-sdk.

Использование модели диалога
Другой способ добиться этого - использовать директивы Dialog. Диалоговые директивы помогут вам легко заполнять и проверять значения слотов. Вы можете использовать директивы, чтобы запросить у пользователя информацию, необходимую для выполнения его запроса.

Подробнее о директивах Dialog здесь

...