我尝试在ApiAiApp和ActionsSdkApp的文档中找到,它们没有属性或函数来获取conversationId。我可以从 JSON 请求中看到这一点。我是否必须自己解析请求才能获取conversationId? sessionId应该是常用的。
最佳答案
虽然没有记录,但有一个 getConversationId()
是 ActionsSdkApp
对象的一部分,但不是 ApiAiApp
对象。但是,如果您使用 Node.js(如果您使用该库,您就会使用 Node.js),那么处理 JSON 对象也应该很容易。对于 API.AI,您应该在 originalRequest.data.conversation.conversationId
中找到它。
但是请记住,对话没有“结束”事件。因此,虽然您会知道何时有新对话以及何时更新,但您不会知道用户何时停止该特定对话。
根据您的需要,您可能希望使用用户 ID 而不是对话 ID。它不提供有关对话何时结束的信息,但它可以在不同 session 和设备之间跟踪同一用户。
对于大多数用户(可能不是您的情况),conversationid 可能没有您想象的那么常用。虽然使用它作为在数据库或类似的东西中保存状态的 key 可能是有意义的,但让 Google 自己保存状态更容易。
您可以使用 app.setContext( name, lifespan,parametersObject )
method 将状态保存在 API.AI 的上下文中。 。下次通过时,您可以从 app.getContext()
method 获取数据。 .
在 ActionsSdkApp 对象中,您可以使用 dialogState
对象执行等效操作,该对象是大多数类似 Ask 的方法(例如 app.ask()
method )。然后,您可以通过 app.getDialogState()
method 进行下次调用。 。 (此页面还讨论了可用于相同用途的 app.data
字段,但我找不到更多有关它的文档。)
关于actions-on-google - 如何从ApiAiApp或ActionsSdkApp获取conversationId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45227595/