2

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

4

1 回答 1

3

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

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

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

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

app.setContext( name, lifespan, parametersObject ) 您可以使用方法将状态保存在 API.AI 的上下文中。在下一次通过时,您可以从app.getContext() 方法中获取数据。

在 ActionsSdkApp 对象中,您可以使用dialogState作为大多数类似于 ask 的方法(例如app.ask() method)的最后一个参数的对象来做一些等效的事情。然后,这将在您下一次通过app.getDialogState() 方法调用时可用。(此页面还讨论了app.data可用于同一事物的字段,但我找不到更多关于它的文档。)

于 2017-07-21T03:23:59.333 回答