首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果意图数超过200,我们是否应该为所有意图设置单独的函数处理程序

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

Stack Overflow用户
提问于 2020-04-26 16:17:38
回答 2查看 91关注 0票数 0

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

在这里,我们希望有一个带有意图名称作为参数的公共函数,因为我们所做的就是从数据库中获取响应。

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

EN

回答 2

Stack Overflow用户

发布于 2020-04-26 18:06:02

是的,使用参数化的函数或类是一个很好的实践。有了这个设置,如果两个意图在webhook中执行相似的操作,你可以很容易地重用任何需要的逻辑。如果您需要一些不同的行为,您可以在参数中输入值,例如结束对话的函数。

代码语言:javascript
运行
复制
    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 intents时可能会导致一些问题。这些帮助器意图需要正常意图不使用的额外参数,因此您必须在公共处理程序中考虑它们,或者为它们编写单独的处理程序。如果您不需要这些意图,那么使用单个处理程序没有任何坏处。

还有一件事需要注意,有100个意图是相当多的。记住,意图应该用来表明你的用户说了什么,而不是作为你的流程中的一个步骤。通常,这意味着您只有一个意图来处理用户的yes输入,并且您将使用context来确定您所处的对话步骤。

票数 1
EN

Stack Overflow用户

发布于 2020-04-27 03:50:11

如果您正在使用actions-on-googledialogflow-fulfillment库,那么可以为每个Intent设置一个Intent处理程序,并让这些处理程序使用您想要的参数调用其他函数,这是最好的方法。

然而..。如果你没有使用这些库,你当然还有其他的选择。

例如,使用multivocal,您可以设置构建器函数,将参数提取到请求环境中并进行数据库调用。如果您在Dialogflow中设置了" Action“字段,则可以(但不必)将其用作Action Handler的基础。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61437733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档