我试图在ApiAiApp和ActionsSdkApp的文档中找到,它们没有获取conversationID的属性或函数。我可以从 JSON 请求中看到这一点。我是否必须自己解析请求才能获取对话 ID? 对话 ID 应该是常用的。
尽管没有记录,但有一个getConversationId()
是ActionsSdkApp
对象的一部分,但不是ApiAiApp
对象的一部分。但是,如果您使用的是 Node.js(如果您使用库,则会如此(,那么处理 JSON 对象也应该很容易。对于 API。AI 你应该在originalRequest.data.conversation.conversationId
中找到它.
但请记住,对话没有"结束"事件。因此,虽然您将知道何时有新对话以及何时更新,但您将不知道用户何时停止该特定对话。
根据您的需要,您可能希望使用用户标识而不是对话标识。它不提供有关对话何时结束的信息,但它可以在不同的会话和设备之间跟踪同一用户。
对于大多数用户(在您的情况下可能不是(,对话 ID 可能不像您想象的那么常用。虽然将其用作在数据库中保存状态或类似内容的键可能是有意义的,但让 Google 保存状态本身更容易。
您可以将状态保存在 API 的上下文中。使用app.setContext( name, lifespan, parametersObject )
方法的 AI。下次通过时,您可以从app.getContext()
方法获取数据。
在 ActionsSdkApp 对象中,可以使用dialogState
对象执行等效操作,该对象是大多数类似 ask 的方法(如app.ask()
方法(的最后一个参数。然后,这将在您通过app.getDialogState()
方法进行的下一次调用中可用。(此页面还讨论了可用于同一事物的app.data
字段,但我找不到更多有关它的文档。