Dialogflow Client API (NodeJS) 能否以无状态方式工作?
Can the Dialogflow Client API (NodeJS) work in a stateless manner?
我正在考虑使用 Dialogflow 开发一个解决方案,其中用户界面事件(例如键入的用户输入)将作为 http REST 事件到达。
这个问题是 Dialogflow 客户端 API(注意:这与实现 API 不同)看起来是有状态的:https://github.com/googleapis/nodejs-dialogflow
(...但我可能是错的...)
在大多数(所有?)任何理智的人都可能使用的现代无服务器范例中,有状态是很难的。主要是 - 没有保证后续事件将在相同的 运行 时间实例到达。
有点令人气愤的是,尽管上面的回购协议中提供了许多示例,但 none 其中看起来像现实的(但很小的)应用程序,处理多会话、多回合(甚至 2-3 回合) ) 用户输入。
任何 运行 时间实例 could/would 调用 new dialogflow.SessionsClient();
的想法只是每次运行时初始化(不是每个会话)初始化 API,然后其他一切都通过 like await sessionClient.detectIntent(request);
???
完成
现在我已经输入了这个,我非常确信这是正确的。但如果有人能确认那就太好了!
底层 Dialogflow 会话 API 本身是无状态的 - 做出的任何有状态决策都必须包含在您对 detectIntent
的调用中。 JavaScript 库也反映了这种无状态场景。
SessionsClient
构造函数设置连接和身份验证信息,但不维护任何其他会话 状态。因此,您可以使用同一个对象来管理多个对话。
请注意,这仍然意味着 您 需要维护会话状态(会话 ID、上下文中返回的值和生命周期等)以便将其传递给 detectIntent
作为请求的一部分。
我正在考虑使用 Dialogflow 开发一个解决方案,其中用户界面事件(例如键入的用户输入)将作为 http REST 事件到达。
这个问题是 Dialogflow 客户端 API(注意:这与实现 API 不同)看起来是有状态的:https://github.com/googleapis/nodejs-dialogflow
(...但我可能是错的...)
在大多数(所有?)任何理智的人都可能使用的现代无服务器范例中,有状态是很难的。主要是 - 没有保证后续事件将在相同的 运行 时间实例到达。
有点令人气愤的是,尽管上面的回购协议中提供了许多示例,但 none 其中看起来像现实的(但很小的)应用程序,处理多会话、多回合(甚至 2-3 回合) ) 用户输入。
任何 运行 时间实例 could/would 调用 new dialogflow.SessionsClient();
的想法只是每次运行时初始化(不是每个会话)初始化 API,然后其他一切都通过 like await sessionClient.detectIntent(request);
???
现在我已经输入了这个,我非常确信这是正确的。但如果有人能确认那就太好了!
底层 Dialogflow 会话 API 本身是无状态的 - 做出的任何有状态决策都必须包含在您对 detectIntent
的调用中。 JavaScript 库也反映了这种无状态场景。
SessionsClient
构造函数设置连接和身份验证信息,但不维护任何其他会话 状态。因此,您可以使用同一个对象来管理多个对话。
请注意,这仍然意味着 您 需要维护会话状态(会话 ID、上下文中返回的值和生命周期等)以便将其传递给 detectIntent
作为请求的一部分。