Javascript Google Actions sdk-无法在Q/A会话之外持久保存app.data

Javascript Google Actions sdk-无法在Q/A会话之外持久保存app.data,javascript,actions-on-google,Javascript,Actions On Google,我有一个简单的游戏,我在用户和GA之间的Q/a会话之间传递值。但是,我注意到app.state没有在下一个会话中保持值 它基本上是询问正确/错误类型的问题,并将这些问题传递给检查和验证 示例代码 exports.myQNAFunction = functions.https.onRequest((request, response) => { // get an instance of the Google Actions SDK const app = new ActionsSdkAp

我有一个简单的游戏,我在用户和GA之间的Q/a会话之间传递值。但是,我注意到app.state没有在下一个会话中保持值

它基本上是询问正确/错误类型的问题,并将这些问题传递给检查和验证

示例代码

exports.myQNAFunction = functions.https.onRequest((request, response) => {
 // get an instance of the Google Actions SDK
const app = new ActionsSdkApp({request: request, response: response});
app.data = {answer: ''}

// Function to handle the built in intents
function handleBuiltInIntent (app) {

    // Get dialog state to know where we are in the conversation
    var dialogState = app.getDialogState();

    // get our custom parameter
    var stage = dialogState.stage;
    console.info('handleBuiltInIntent: ' + stage);
    console.info('app.data.answer: ' + app.data.answer);

    // Check where we are in the conversation
    if(stage === 1) {
        console.info("block stage 1 ")
        let rawInput = app.getRawInput();
        if(rawInput === 'ok' || rawInput === 'yes' || rawInput === 'sure') {
            // user wants to know more
            app.tell('Ok then, here are the instructions!');
        } else if(rawInput === 'no') {
            dialogState.stage = 2;
            let question = getNextQuestion();
            let answer = qna_object_dict[question];
            app.data.answer = answer
            app.ask(question, dialogState);
        } else {
            // we finish the dialog
            app.tell('Ok then, goodbye!');
        }
    } else if(stage === 2) {
        console.info("block stage 2 ")
        let rawInput = app.getRawInput();
        if (rawInput === app.data.answer) {
            console.info(app.data.answer)
            dialogState.stage = 2;
            let question = getNextQuestion();
            let answer = qna_object_dict[question];
            app.data.answer = answer
            app.ask(question, dialogState);
        } else {
            app.tell('Wong Answer, goodbye!');
        }
    } else {
        // Build a prompt
        console.info("block stage 0 ")
        let welcome_string = welcomePrompt()
        let inputPrompt = app.buildInputPrompt(false,
            welcome_string);
        dialogState.stage = 1;
        app.ask(inputPrompt, dialogState);
    }
}

});
是特定于会话的数据,用于维护单个会话的不同步骤之间的状态

如果希望在会话/对话之间为给定用户保留数据,可以使用。

是特定于会话的数据,以在单个对话的不同步骤之间保持状态


如果希望在会话/对话之间为给定用户保留数据,可以使用。

我确实理解两者之间的区别。我在存储app.data值时遇到困难。然而,这就是我现在正在做的:var dialogState=app.getDialogState()var stage=dialogState.stage;var game_score=dialogState.game_score如果您对问题有更改-更新问题,而不是试图在评论中说些什么。这使得理解问题所在变得非常困难。例如,不要使用
app.data.answer=answer
,而是使用
app.userStorage.answer=answer
。这将在会话之间保留数据。我确实理解两者之间的区别。我在存储app.data值时遇到困难。然而,这就是我现在正在做的:var dialogState=app.getDialogState()var stage=dialogState.stage;var game_score=dialogState.game_score如果您对问题有更改-更新问题,而不是试图在评论中说些什么。这使得理解问题所在变得非常困难。例如,不要使用
app.data.answer=answer
,而是使用
app.userStorage.answer=answer
。这将在会话之间持久化数据。