Alexa Skills: Как я могу передать ценность от одного намерения к другому, используя JOVO - PullRequest
0 голосов
/ 24 июня 2019

У меня есть следующая структура намерений:

async ContactIntent() {
   const contact_id = this.$inputs.contactid.value;
   // Contact detail is fetched from API

   // if this contact is associated with any group
   // ask user whether he wants to know about the groups
   // expected answers could either be YES or NO.
   // if YES, I like to jump to ContactGroupIntent intent with
   // present contact_id
   this.ask('User 19588 is associated with 5 groups. Do you want to know what they are? Say YES or NO.')
},

async ContactGroupIntent() {
   // when called directly
   const contact_id = this.$inputs.contactid.value;
   // or I want to grab the id sent from ContactIntent after user says YES

   // API fetches contact groups and outputs the same

},

'AMAZON.YesIntent': function() {
  // Do I need to do something here?
},

'AMAZON.NoIntent': function() {
},

Я использую среду JOVO для наращивания навыка.

Вопрос: 1. Как передать значение из одного намерения вдругое без потери состояния 2. Поскольку я не могу использовать this.ask() и return this.toIntent("intent_name") одновременно, как я могу перевести пользователя к другому намерению после того, как alexa выведет что-то и это тоже со значением, которое у меня есть в текущем намерении?

Пример: Intent-A имеет значение 19558 Контакт с вышеуказанным идентификатором связан, скажем, с 5 различными группами.Возможно ли, что alexa выводит что-то вроде:

Пользователь 19588 связан с 5 группами.Вы хотите знать, что они есть?

и ожидаете YES или NO.Если ДА - ответ, alexa перемещает элемент управления с Intent-A на Intent-B с 19588, внутри Intent-B он выполняет остальные операции и, наконец, выводит имена этих групп.

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

Есть предложения, пожалуйста?Я новичок в развитии навыков Alexa.

1 Ответ

2 голосов
/ 27 июня 2019

использовать данные сеанса.

Сохраните значение, которое вы хотите использовать для других целей. Например:

в Intent-A сохраняет значение 19588 как часть данных сеанса, а также задает вопрос, чтобы пользователь отвечал «да» или «нет».

this.$session.$data.user_number = 19588
this.$speech = 'User 19588 is associated with 5 groups. Do you want to know what they are?'
this.$reprompt = 'Sorry I could not hear you, Do you want to know what they are?'
this.ask(this.$speech, this.$reprompt)

Если пользователь говорит «Да», AMAZON. Да, намерение будет запущено, поэтому

'AMAZON.YesIntent': function() {
    let user_number = this.$session.$data.user_number
    // perform all the appropriate verifications here and do the rest you need to do
},

Взгляните на это

Теперь, когда вы используете this.ask(), микрофон будет оставаться открытым в ожидании ввода пользователя, поэтому разместите переменные speech и reprompt, чтобы задать правильный вопрос и ожидать, что пользователь скажет «Да» или «Нет».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...