调用函数、Intent Name 或 Action 哪个更好?

Which is better practice to invoke functions,Intent Name or Action?

在 DialogFlow 中,我们可以根据 Intent Name 或 Actions 触发函数并执行任务。

我们应该用哪一个来决定?什么是更好的做法?

我过去曾问过 并尝试过按意图功能和按操作功能模式,我开始认为这些操作几乎完全无用。它们唯一的好处似乎是您可以将相同的操作附加到多个意图,但如果有的话,我希望根据特定的上下文和参数,由多个函数处理相同的意图。这源于一个设计目标,即与许多更简单的意图相比,具有更少的多用途意图,尽管后一种模式可以说是许多 Google 文档所暗示的模式。

从概念上讲,我认为将实现函数视为 finite state machine 的转换函数很有用,其中状态由传入的 webhook 请求定义,即 (intent, contexts, parameters, event) 加的元组也许是其他元数据,例如语言环境和表面功能。我还没有找到向该模型添加任何内容的操作。

在大多数情况下,这无关紧要。 @gmolau 描述的方法很好,我认为它们非常准确。

当然,文档越来越倾向于对所有内容使用 Intent Name 而不是 Action。

我认为使用动作名称而不是 Intent 名称最有意义的情况是当您有不同的 Intent 可能会响应相同的短语,并最终做同样的事情,但仅限于某些情况上下文。这使您可以为 Dialogflow 端调用的内容执行逻辑,而不必针对多个 Intent 注册相同的处理程序。