Dialogflow es 如果意图的数量超过200,我们是否应该为所有意图设置单独的函数处理程序

Dialogflow es 如果意图的数量超过200,我们是否应该为所有意图设置单独的函数处理程序,dialogflow-es,actions-on-google,dialogflow-es-fulfillment,Dialogflow Es,Actions On Google,Dialogflow Es Fulfillment,如果我有超过100个意向,包括后续意向,该怎么办。我们是否应该为每个100意图编写单独的处理程序,并从处理程序函数调用一个公共函数。对吗 这里我们希望有一个通用函数,使用intent name作为参数,因为我们所做的只是从数据库中获取响应 我们应该在intentmap集合中使用参数化函数,还是为所有这些意图使用单独的处理函数,并从内部调用公共参数化函数。请建议。是的,使用参数化函数或类是一种良好的做法。通过这种设置,如果两个意图在webhook中执行类似的操作,您可以轻松地重用任何所需的逻辑。

如果我有超过100个意向,包括后续意向,该怎么办。我们是否应该为每个100意图编写单独的处理程序,并从处理程序函数调用一个公共函数。对吗

这里我们希望有一个通用函数,使用intent name作为参数,因为我们所做的只是从数据库中获取响应


我们应该在intentmap集合中使用参数化函数,还是为所有这些意图使用单独的处理函数,并从内部调用公共参数化函数。请建议。

是的,使用参数化函数或类是一种良好的做法。通过这种设置,如果两个意图在webhook中执行类似的操作,您可以轻松地重用任何所需的逻辑。 如果您需要一些不同的行为,您可以在参数中输入值,例如结束对话的函数

    app.intent("Stop Conversation"), (conv) => {
      const message = "Okay, have a nice day";
      endConversation(conv, message);
    });

    app.intent("Cancel Reservation"), (conv) => {
      const message = "Okay, I will cancel your reservation. Have a nice day."

      endConversation(conv, message)
    });

    endConversation(conv, message) {
      conv.close(message);
    }

您可以选择使用一个单独的处理程序来查找意图名称,然后获取响应,但这可能会在处理时引起一些问题。这些Helper意图需要额外的参数,而正常意图不需要这些参数,因此您必须在公共处理程序中考虑它们,或者为它们编写单独的处理程序。如果您不需要这些意图,那么使用单个处理程序不会有任何伤害


另外需要注意的是,有100个意图是相当多的。记住,意图应该用来表示用户所说的,而不是作为流程中的一个步骤。通常这意味着您只有一个意图来处理来自用户的yes输入,您将使用它来确定您所处的对话步骤。

如果您使用的是或库,则选择yes,最好的方法是为每个意图使用一个意图处理程序,并让这些处理程序使用您想要的参数调用其他函数

然而。。。如果您不使用这些库,那么您肯定有其他可用的选项

例如,可以使用设置生成器函数,将参数提取到请求环境中并进行数据库调用。如果在Dialogflow中设置“Action”字段,则可以(但不必)将其用作操作处理程序的基础


如果您只想坚持使用自己的库,您可以自己解析JSON,并根据您想要的值进行任何函数调用。

使用通用函数处理程序的示例代码实现:-intentMap.set('Share the Experience',commonfunction);intentMap.set('FAQ分享经验-是',commonfunction);intentMap.set('FAQ分享经验-否',commonfunction);intentMap.set('FAQ共享体验-是-自定义-是',commonfunction);intentMap.set('FAQ分享经验-是-自定义-否',commonfunction);intentMap.set('FAQ分享经验-是-自定义-否-自定义-是',commonfunction);当我说100个意图时,我也包括了一个意图的10个后续意图部分。所以,我可以只使用一个函数并使用下面的代码从数据库中获取意图名称和特定于意图和名称的响应吗?const intent=request.body.queryResult.intent.displayName;数据库表结构:-intent_name | | intent_response“分享经验”| |“请告诉我您的经验?”如果您有任何额外的信息或代码要添加到您的问题中,请编辑您的问题并添加到那里。如果您这样做而不是将其添加为注释,会更清楚。如果我有200多个意图,并且我使用以下语法:-intentmap.set(intentname,functionname);我应该从所有200个意图中调用一个公共函数并获取意图名称,然后基于意图名称将其响应存储在我的数据库中。1 request.body.queryResult.intent.displayName您有什么建议?选项1:为每个意图拥有200个函数处理程序,并使用意图名称作为输入调用公共参数化函数,并从数据库表中获取响应。选项2:-对于所有意图和获取意图名称并获取其响应,只有一个通用函数。您可能应该更新您的问题以添加该信息,以便更清楚。很难把它作为评论的一部分来阅读,也很难理解你的意思。