Actions on google 如何从APIAApp或ActionsSdkApp获取conversationId?

Actions on google 如何从APIAApp或ActionsSdkApp获取conversationId?,actions-on-google,api-ai,Actions On Google,Api Ai,我试图在APIAApp和ActionsSdkApp的文档中找到,它们没有获取conversationId的属性或函数。我可以从JSON请求中看到这一点。我必须自己解析请求才能获得会话ID吗? conversationId应该是常用的。虽然没有文档记录,但是有一个getConversationId()是ActionsSdkApp对象的一部分,而不是ApiaApp对象的一部分。但是,如果您使用的是Node.js(如果您使用的是库的话,您将使用Node.js),那么处理JSON对象也应该很容易。对于A

我试图在APIAApp和ActionsSdkApp的文档中找到,它们没有获取conversationId的属性或函数。我可以从JSON请求中看到这一点。我必须自己解析请求才能获得会话ID吗?
conversationId应该是常用的。

虽然没有文档记录,但是有一个
getConversationId()
ActionsSdkApp
对象的一部分,而不是
ApiaApp
对象的一部分。但是,如果您使用的是Node.js(如果您使用的是库的话,您将使用Node.js),那么处理JSON对象也应该很容易。对于API.AI,您应该在
originalRequest.data.conversation.conversationId
中找到它

但是,请记住,对话没有“结束”事件。因此,虽然您知道何时有新对话,何时更新,但您不知道用户何时停止该特定对话

根据您的需要,您可能希望使用userid而不是conversationid。它不提供会话何时结束的信息,但可以在不同会话和设备之间跟踪同一用户

对于大多数用户(在您的情况下可能不是这样),conversationid可能并不像您想象的那样被使用。虽然将其用作在数据库中保存状态的键或类似的键可能是有意义的,但让谷歌自己保存状态更容易

您可以使用
app.setContext(名称、寿命、参数对象)
将状态保存在API.AI的上下文中。下次通过,您可以从
app.getContext()
获取数据


在ActionsSdkApp对象中,您可以使用
对话框状态
对象执行等效操作,该对象是大多数类似ask的方法(例如
app.ask()
)的最后一个参数。这将在下次通过
app.getDialogState()
调用时可用。(本页还讨论了一个可用于相同用途的
app.data
字段,但我找不到更多关于该字段的文档。)

如果您可以更新问题以解释您认为需要conversationId的原因,我可以更好地更新答案。来解释为什么我需要ConversationID而不是将状态保存到上下文中。原因是另一个应用程序(云功能)正在观察firebase的变化,并在新的对话继续进行时执行一些其他逻辑。该函数不属于此APIAApp,并且运行完全不同的逻辑。我尽量不把那些不相关的功能放在一个ApiAi应用程序中。我希望我的解释有道理。或者,如果有更好的方法来解决我的问题?让用例更清晰,这样你就可以理解我为什么需要它。我想让应用程序有真正的人参与到对话中。另一个web应用程序(非ApiAi应用程序)连接到同一firebase。一个真正的人可以观看正在进行的对话。如果他们发现对话出错或机器无法正确回答,他实际上可以在用户离开之前立即接管对话。我从囚犯那里得到了答案,这很有帮助。谢谢这是一个新的REQUEST.sessionId,我认为它与conversationId相同。我用这个来回答你的问题,为什么我需要ConversationID。我需要将状态保存到firebase而不是上下文。原因是另一个应用程序正在观察firebase的变化,并且只要新的对话还在进行,就可以执行其他一些逻辑。这听起来是一个很好(而且很聪明)的方法。{:我已经用更多的信息和一些其他的事情来更新答案,但是我认为你的解决方案是正确的。如果这是一个可行的答案,请接受和/或赞成它。是的,看到你的更新。非常感谢。我需要得到15个荣誉来投票。这些天我会尝试回答更多的问题。让我回来投你一票。