В последнее время я играю с Google Actions.Я хочу создать поток, где я делаю перевод.Он состоит из 3 шагов.
На первом шаге пользователь выбирает сумму, затем со счета и, наконец, до счета.
Первое намерение имеет выходной контекст transferMoney-followup
.Второе намерение имеет transferMoney-followup
в качестве входного контекста и transferMoneyFromAccount-followup
в качестве выходного контекста.Третье намерение имеет transferMoneyFromAccount-followup
в качестве входного контекста.
Когда я перехожу от первого намерения ко второму, и пользователь выбирает опцию, у меня есть доступ к первому и параметрам оттуда.
Когда я показываю теперь список снова на этот раз для 3-го намерения после выбора, он никогда не достигает там, и код никогда не выполняется, и 2-е намерение выполняется снова.Я предполагаю, что я делаю что-то не так с контекстами, но не могу понять, что.
const app = require('actions-on-google').dialogflow();
app.intent('transferMoney' , (conv, params) => {
conv.ask("Sure, let's transfer " + params.amount +"...");
let items = {
title: 'Select an account to send money FROM',
items: {}
};
for (let i = 0; i < conv.data.userInfo.banks[0].accountsInformation.accounts.length; i++) {
let account = conv.data.userInfo.banks[0].accountsInformation.accounts[i];
items.items[account.id] = {
title: account.alias,
description: account.balance + "$"
}
}
conv.ask(new List(items));
});
//Create a Dialogflow intent with the `actions_intent_OPTION` event
app.intent('transferMoney.FromAccount', (conv, params, option) => {
let amount = conv.contexts.get("transfermoney-followup").parameters.amount;
let fromAccountId = option;
conv.ask("Let's send that " + amount + " from " + fromAccountId);
conv.ask("Where should we send them to ?");
let items = {
title: 'Select an account to send money TO',
items: {}
};
for (let i = 0; i < conv.data.userInfo.banks[0].accountsInformation.accounts.length; i++) {
let account = conv.data.userInfo.banks[0].accountsInformation.accounts[i];
items.items[account.id] = {
title: account.alias,
description: account.balance + "$"
}
}
conv.ask(new List(items));
});
//Create a Dialogflow intent with the `actions_intent_OPTION` event
app.intent('transferMoney.FromAccount.ToAccount', (conv, params, option) => {
let amount = 0;
let fromAccountId = 1;
let toAccountId = 2;
conv.ask("Let's send that " + amount + " from " + fromAccountId + " to " + toAccountId)
});
Дайте мне знать, если вам нужна дополнительная информация.
РЕДАКТИРОВАТЬ: 1-е намерение 2-е намерение 3-е намерение