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



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

在这里,我们希望有一个以intent name为参数的公共函数,因为我们所做的只是从数据库中获取响应。

我们应该在意图映射集中设置参数化函数,还是为所有这些意图设置单独的处理程序函数,并从内部调用公共参数化函数。请提出建议。

是的,使用参数化函数或类是一种很好的做法。有了这个设置,如果两个意图在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意图时,这可能会导致一些问题。这些Helper意图需要常规意图不使用的额外参数,因此您必须在公共处理程序中对它们进行说明,或者为它们编写单独的处理程序。如果您不需要这些意图,那么使用单个处理程序就没有任何害处。


需要注意的一件事是,拥有100个意图是相当多的。请记住,意图应该用于指示用户所说的内容,而不是作为流程中的一个步骤。通常,这意味着你只有一个意图来处理来自用户的"是"输入,你将使用上下文来确定你在对话的哪一步

如果你在谷歌或dialogflow实现库上使用操作,那么是的,为每个Intent设置一个Intent处理程序,并让这些处理程序用你想要的参数调用其他函数是最好的方法。

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

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

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

相关内容

最新更新