在DialogFlow中,我们可以根据意图名称或操作触发功能并执行任务。
我们应该使用哪个决定?什么是更好的做法?
答案 0 :(得分:4)
我过去曾问过similar question,并且已经尝试了按意图功能和按动作功能模式,而我开始认为这些动作几乎完全没有用。它们的唯一好处似乎是可以将相同的动作附加到多个意图上,但是如果有任何我想拥有相同意图的东西,则可以由多个函数根据特定的上下文和参数来处理。这源于一个设计目标,即它的多功能意图要比许多简单意图要少,尽管后者的模式可以说是许多Google文档所隐含的。
从概念上讲,我认为将履行函数视为finite state machine的转换函数很有用,其中状态由传入的Webhook请求定义,即(intent, contexts, parameters, event)
的元组加上其他元数据,例如语言环境和地表功能。我还没有找到向该模型添加任何东西的动作。
答案 1 :(得分:2)
在大多数情况下,这无关紧要。 @gmolau所描述的方法是一种很好的方法,我认为它们几乎是正确的。
当然,文档越来越倾向于将Intent Name用于所有内容而不是Action。
我认为使用动作名称而不是Intent名称最有意义的情况是,当您有不同的Intent可以响应相同的短语,并且最终会执行相同的操作时,但仅限于某些情况。这样一来,您就可以对Dialogflow端调用的内容进行逻辑处理,而不必针对多个Intent注册同一个Handler。