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

时间:2019-01-09 20:16:56

标签: dialogflow-fulfillment

在Dialogflow实现中,我只想使用conv.user.storage将数据从Welcome Intent传递到Help 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
}

1 个答案:

答案 0 :(得分:0)

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

总而言之,收集您的Contexts输入的意图使用输出上下文来“记住”您所说的内容。 相同的上下文用作下一个意图的输入上下文,该意图将输入收集到Welcome意图中。

您需要相应地更新代码。请查看详细信息:

https://dialogflow.com/docs/contexts

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