Меня очень смущает документация Google по диалогу и действиям для Google.Похоже, мне нужно смешивать и сопоставлять между ними, чтобы реализовать некоторые поведения, такие как сохранение состояния между поворотами разговора.Например, у меня есть обработчик намерений потока диалога, который выглядит следующим образом
function showCard(agent) {
let conv = agent.conv();
if(!conv) console.log('There is no conv!'); // only assistant will have a conversation
let n = 0;
if(conv){
if( !conv.user.storage ) conv.user.storage = {};
n = conv.user.storage.cardNumber || conv.data.cardNumber || 0;
console.log(`set cardNumber from ${n}`);
}
// do some magic to generate a Card and simple response into _speakText
agent.add( _speakText );
if( conv ) {
if( !conv.user.storage ) conv.user.storage = {};
conv.data.cardNumber = n;
conv.user.storage.cardNumber = n;
console.log(`set cardNumber to ${n}`);
}
Похоже, что ни диалог, ни пользовательские данные никогда не сохраняются.Итак, как мне сохранить состояние через API-интерфейс dialogflow?Чего мне не хватает?
Неужели мое замешательство в примерах диалогового потока демонстрирует другой обработчик запросов / ответов по сравнению с действиями в Google?(Должен ли я выдернуть все, что связано с агентами диалогового потока?)
--- edit ---
const {WebhookClient} = require('dialogflow-fulfillment');
...
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
ИЛИ
const { dialogflow } = require('actions-on-google');
...
const app = dialogflow();
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);