我尝试在ApiAiApp和ActionsSdkApp的文档中找到它们没有属性或函数来获取conversationId。我可以从JSON请求中看到这一点。我是否必须自己解析请求才能获得对话? conversationId应该是常用的。
答案 0 :(得分:3)
虽然没有记录,但getConversationId()
对象中有一个ActionsSdkApp
,但<{1}}对象的不是部分。如果您正在使用Node.js(如果您正在使用该库,那么它也是如此),但是也应该很容易处理JSON对象。对于API.AI,您应该在ApiAiApp
中找到它。
但请记住,没有&#34;结束&#34;谈话的事件。因此,当您知道何时有新会话以及何时更新时,您将无法知道用户何时停止该特定会话。
根据您的需要,您可能希望使用userid而不是conversationid。它不会提供有关会话何时结束的信息,但可以跟踪不同会话和设备之间的同一用户。
对于大多数用户(可能不是你的情况),对话框可能不像你想象的那样使用。虽然使用它作为在数据库中保存状态的关键或沿着这些线的某些东西可能是有意义的,但让Google自己保存状态更容易。
您可以使用originalRequest.data.conversation.conversationId
method在API.AI中的上下文中保存状态。下次,您可以从app.setContext( name, lifespan, parametersObject )
method获取数据。
在ActionsSdkApp对象中,您可以使用app.getContext()
对象执行等效操作,该对象是大多数类似于ask的方法的最后一个参数(例如dialogState
method)。然后,您可以通过app.ask()
method在下次通话时使用此功能。 (此页面还讨论了可用于同一事物的app.getDialogState()
字段,但我无法找到有关它的更多文档。)