Dialogflow es Dialogflow中保存的对话是如何工作的?

Dialogflow es Dialogflow中保存的对话是如何工作的?,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,我试图了解conv.data和conv.user.storage是如何工作的。 据我所知,conv.data用于临时存储,而conv.user.storage用于会话之间更长时间的存储。当我在本地测试时,我注意到conv.data并没有真正为下一个回合保存数据,而是只保存同一个回合。那么,它是否与上下文有关 另一方面,用户存储非常简单,您保存数据并将其保存在用户中,它被限制为10000字节,但仅此而已 但我不明白的是这一部分: 当助手无法将身份与用户匹配时,将在对话结束时清除用户存储的内容。助手

我试图了解
conv.data
conv.user.storage
是如何工作的。 据我所知,
conv.data
用于临时存储,而
conv.user.storage
用于会话之间更长时间的存储。当我在本地测试时,我注意到
conv.data
并没有真正为下一个回合保存数据,而是只保存同一个回合。那么,它是否与上下文有关

另一方面,用户存储非常简单,您保存数据并将其保存在用户中,它被限制为10000字节,但仅此而已

但我不明白的是这一部分:

当助手无法将身份与用户匹配时,将在对话结束时清除用户存储的内容。助手无法将身份与用户匹配的示例有:

  • 已设置语音匹配,但没有匹配

  • 用户禁用了个人数据

这是否意味着,如果用户现在正在使用该应用程序,然后同一对话中的其他人来测试该应用程序,该应用程序是否清除了数据

TLDR -上下文是否与
conv.data
相关,当上下文过期时,将删除
conv.data

-当其他用户试图使用您的帐户通话时,您的应用程序数据是否会被删除?

您的情况基本正确。让我们看看你说的或问的一些事情

为什么不保存下一轮的
conv.data
数据?

这取决于你所说的“转弯”是什么意思
conv.data
在一次对话中保存-从调用操作开始,直到使用
conv.close()
或等效工具“关闭麦克风”。AoG将此作为一致的对话模型进行维护

(当您使用媒体响应并播放很长的音频文件时,会出现一些错误。但这些都是例外。)

是否使用Dialogflow上下文实现了
conv.data

如果您将AoG与Dialogflow一起使用-是

您可以在Action SDK中使用
conv.data
,它不使用Dialogflow上下文

但是当上下文过期时,它不会过期吗?

是和否。
conv.data
的上下文被创建为一个持久的上下文(生命周期为99),因此上下文过期需要一段时间。该库还每一次刷新上下文,因此它将上下文的生存期保持在99,并重置上下文的20分钟计时器

对于
conv.user.storage
,如果用户现在正在使用应用程序,然后同一对话中的其他人会来测试,它是否清除数据?

否。当用户说出热门词“OK Google”或“Hey Google”时,用户身份就确定了。之后,多个用户可以在对话中发言,设备将其视为同一个帐户

助手不会试图弄清楚谁在谈话中说了什么——只是开始时


因此,如果它在对话开始时识别用户,它将使用他们的
存储
对象。如果没有,它将创建一个新的
存储
对象,在对话结束时(在
conv.close()
之后关闭麦克风时)处理该对象。

感谢您的澄清。你知道为什么当我尝试使用conv.data.somevariable时,它不能在整个对话中保存吗。它仅为已保存的时间保存,但当其他意图触发时,它将被取消定义。这就是为什么我试图理解这一点。这似乎很奇怪,我还没有看到。您可能希望使用代码更新原始问题(或发布新问题),以清晰地演示该问题。我将发布另一个问题:)并进行详细说明。我在此处介绍了更多详细信息: