Google Assistant 的 ActionsSdkApp 和 DialogflowApp 有什么区别

What's the difference between ActionsSdkApp and DialogflowApp for Google Assistant

为了构建 Google 助手应用程序,Google 提供 two different APIs as part of their node.js actions-on-google library :

有一个共同的界面,但我不明白两者之间的区别以及为什么我会使用一个或另一个。

简而言之,这两个对象提供类似(尽管不完全相同)的方法来处理请求并为两种默认方式提供结果Google 允许您为助手构建一个操作。

DialogflowApp 对象是您可能会用于大多数用途的对象。它旨在与 Dialogflow 工具一起使用,让它处理自然语言处理 (NLP) 组件,并在适当的情况下将结果传递给您的 webhook。它提供了一些特定于 Dialogflow 功能(例如上下文)的方法,并将其他内容映射到 Dialogflow 期望的响应格式。

如果您使用自己的 NLP 并且您的 webhook 直接从 Google 获取内容(不使用 Dialogflow),则应使用 ActionsSdkApp。如果您需要构建 actions.json 文件,则您使用的是 Actions SDK。

两者都有共同的方法和习惯用法,例如 app.ask()app.tell() 以及将 app.data 映射到会话存储等等,即使实现这些的细节对于每个人来说都是不同的类型。

您应该使用与您正在使用的工具相匹配的工具。对于大多数新用户 - 这可能是 Dialogflow 和 DialogflowApp 对象。

更新

注意问题中的API,我的回答中提到的具体对象,具体方法都是针对之前版本库的

当前库中何时使用 ActionSDK 与 Dialogflow 对象的概念仍然成立,因此这个问答背后的概念仍然有效,但技术细节有改变了。

更新 - 2020 年 6 月

有问题的库现已弃用,因为它不再适用于 Google 上的当前版本的 Actions(Actions Builder/SDK AoG v3)。如果您仍在使用 AoG v2 Actions SDK,它仍然适用于 Dialogflow(它使用 AoG v2)。

简单来说

为一次性应用程序使用 Actions SDK。这些应用程序在被调用后直接提供所需的答案,然后停止。他们只给你这个结果。一个典型的例子是将计时器设置为十分钟。

将 Dialogflow 用于所有其他应用程序,对于那些真正对话的应用程序,其中有多个路径可供遵循,并且您希望用户在对话过程中提供更多信息.