如何在Dialogflow中的对话之间保存数据?

Gru*_*ixx 0 firebase dialogflow-es

我不明白你应该如何保存数据.我试过用

let conv = agent.conv()
conv.data.data1=mydata //to save
mydata = conv.data.data1 //to load
agent.add(conv)
Run Code Online (Sandbox Code Playgroud)

但它崩溃我的应用程序.我看到你可以放入信息了

var token = JSON.stringify(request.body.originalDetectIntentRequest.payload.conversation.conversationToken);
Run Code Online (Sandbox Code Playgroud)

但是如何在响应中将数据放入conversationToken?

你的方法是什么?谢谢

Abh*_*agi 8

使用输出上下文保存参数

{  
  "fulfillmentText":"This is a text response",
  "fulfillmentMessages":[  ],
  "source":"example.com",
  "payload":{  
    "google":{  },
    "facebook":{  },
    "slack":{  }
  },
  "outputContexts":[  
    {  
      "name":"<Context Name>",
      "lifespanCount":5,
      "parameters":{  
        "<param name>":"<param value>"
      }
    }
  ],
  "followupEventInput":{  }
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是NodeJS客户端

您可以使用参数保存上下文

let param1 = [];
let param2 = {};
let ctx = {'name': '<context name>', 'lifespan': 5, 'parameters': {'param1':param1, 'param2': param2}};
agent.setContext(ctx);
Run Code Online (Sandbox Code Playgroud)

得到它

let params = agent.getContext("<context name>").parameters;
let param1 = params.param1;
let param2 = params.param2; 
Run Code Online (Sandbox Code Playgroud)

您可以存储数组,JSON obj,但响应可以保存的总有效负载有限制.在这里查看更多细节.对于大数据,请使用DB.

此外,如果您使用google上的独立操作,则只需将键值对添加到数据对象即可.查看他们存储计数的链接