【发布时间】:2020-03-11 22:20:48
【问题描述】:
我有一个通过 Firebase Cloud Functions 实现的 Google 助理操作。我了解 Cloud Functions 可能会在调用之间共享实例,并且您可以使用全局范围进行繁重的工作和准备工作。我的函数实例化了一个全局类,该类已经序列化了一些 JSON,并在我的函数中处理返回数据和其他任务。我在这个类中有在调用函数时设置的变量,并且我一直小心地确保所有变量都是使用当前对话唯一的conv.data 会话数据对象设置的。希望虽然类实例可能存在于不同的调用之间,并且可能由不同的用户存在,但它仍然会被上下文化到本地范围,并且我不会看到任何变量被其他会话覆盖。
这让我想到了一个问题,即我该如何测试这个?我尝试使用 Google Assistant 应用在我的移动设备上进行测试,同时在浏览器控制台中进行测试。我目睹了这两个会话合并在一起,这是一团糟,但我不确定这是全局范围,还是只是我正在使用同一个用户帐户测试两个会话。
谁能告诉我是否可以使用同一个用户帐户运行两个相同的操作?看起来conv.data 对象混合了我正在运行的两个不同会话,这表明它对两个会话使用相同的会话令牌。
另一个问题是,您认为使用全局类来跨调用存储状态会成为不同用户的问题吗?文档确实声明一次只能发生一次函数调用。所以不应该有任何竞争条件类型的场景。
【问题讨论】:
标签: google-cloud-functions dialogflow-es actions-on-google dialogflow-es-fulfillment