无法在Dialogflow Fulfillment中跨意图传递数据

问题描述 投票:0回答:1

在Dialogflow Fulfillment中,我只想使用conv.user.storage将欢迎意图中的数据传递给帮助Intent,如下面的代码所示。我可以在欢迎意图中添加它,但是当我尝试在帮助意图中检索它时,它总是未定义,意味着数据不会传递给帮助意图。我已经花了几个小时做一些我认为很直接并且没有任何成功的事情。我真的很感激一个关于如何解决它并理解我做错了什么的真实世界的例子。

function welcome(agent) {
   agent.add(request.body.queryResult.fulfillmentMessages[0].text.text[0]);
    var entity = 'media_getreq?message=volume';
    getData(entity).then(result => {
        let conv = agent.conv();
        conv.user.storage["devicedata"] = result;
        console.log(conv.user.storage["devicedata"]); //WORKS
    });
}

function help(agent) {              
        agent.add(request.body.queryResult.fulfillmentMessages[0].text.text[0]);
        let conv = agent.conv();
        console.log(conv.user.storage["devicedata"]); //ALWAYS EMPTY
}
dialogflow-fulfillment
1个回答
0
投票

您错过了Contexts链接意图所需的关键组件。上下文表示用户请求的当前状态,并允许您的代理将会话信息从一个意图传输到另一个意图。您可以使用输入和输出上下文的组合来控制用户在对话框序列中遍历的对话路径。

总之,收集Welcome输入的意图使用输出上下文来“记住”你所说的内容。相同的上下文用作下一个intent的输入上下文,它将输入收集到HelpIntent中。

您需要相应地更新您的代码。请参阅详情:

https://dialogflow.com/docs/contexts

https://dialogflow.com/docs/contexts/contexts-api

© www.soinside.com 2019 - 2024. All rights reserved.