【发布时间】:2017-11-02 03:13:10
【问题描述】:
场景是这样的。我想向用户显示一两个项目,但我不想一遍又一遍地显示相同的项目。我认为Firebase 函数不会保留状态,因为每个函数调用都会再次激活该函数。那么如何在不必将状态存储在数据库中的情况下维护状态。
【问题讨论】:
标签: actions-on-google dialogflow-es
场景是这样的。我想向用户显示一两个项目,但我不想一遍又一遍地显示相同的项目。我认为Firebase 函数不会保留状态,因为每个函数调用都会再次激活该函数。那么如何在不必将状态存储在数据库中的情况下维护状态。
【问题讨论】:
标签: actions-on-google dialogflow-es
不,Firebase 函数不保留状态。事实上,您甚至无法保证在对同一个 webhook 的调用之间运行在同一台服务器上。
如果您想在对话期间保持状态,但在对话的不同部分之间,您有两种好方法:
如果您使用的是 actions-on-google JavaScript 库,您可以将数据放入 app.data 字段中,并且在下次调用时可以在同一位置使用。 (我找不到这方面的文档,但它在https://plus.google.com/105458329026934344336/posts/Xr1KPiMPzpH 中报告)
由于您使用的是 Dialogflow,因此您可以将状态作为参数添加到 Context。只要 Context 处于活动状态,这些参数将保留在 Context 中,并可供希望将其作为传入 Context 的未来 Intent 使用。
如果您需要在会话之间维护状态,则需要保存该状态,该状态可能与每次请求传递给您的匿名 UserID 相关联。
这些方法类似于您为用户处理 Web 请求时使用的方法。
【讨论】: