0

在 Dialogflow Fulfillment 中,我只想使用 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
}
4

1 回答 1

0

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

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

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

https://dialogflow.com/docs/contexts

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

于 2019-02-23T11:29:25.790 回答