如何在意图之间保持价值

时间:2018-06-10 02:46:47

标签: firebase actions-on-google dialogflow

我在google上执行了一项操作,并将fullfillment实现为firebase功能。

我正在使用app.data对象来保持意图之间的值。这是有效的,但现在它已经忘记了,我正在“未定义”。

在第一个意图中,我存储了我从用户那里得到的值,并且我要求确认

app.intent('intent1', (conv, {myValue}) => {

        //CLEAN AND STORE THE VALUE
        conv.data.myValue = myValue.replace(/[\W_]+/g,'').toUpperCase();


        //ASK USER TO CONFIRM
        conv.contexts.set(Contexts.CONFIRM_YES_NO, 1);      
        //THIS WORKS OK AND THE VALUE IS DISPLAYED CORRECTLY
        conv.ask(`I heard ${conv.data.myValue}, is this correct?`);
        conv.ask(new Suggestions('Yes'));
        conv.ask(new Suggestions('No'));

});

在第二个意图中,我想重新使用原始值,但我得到“未定义”:

app.intent('confirm_yes', (conv) => {   
        //RETURNS "UNDEFINED"
        console.log(conv.data.myValue);

});

这里发生了什么?这种方法过去一直有效,直到今天我升级firebase-tools@3.18.6。我确实做了其他更改,所以不确定我是否打破了它或Google ...

1 个答案:

答案 0 :(得分:1)

如此惊人,我一发布一个问题,我的脑子就找到了答案!

无论如何,我没有使用输出上下文作为是/否意图,但是我没有删除输出上下文名称(图片中的蓝色x),而是删除了整个输出上下文(图片中的红色x)。

这打破了它......显然,当您完全删除输出上下文时,将重置上下文。我不完全理解我猜的背景......

enter image description here