如果我有超过100个意图,包括后续意图,该怎么办?我们是否应该为每个100个意图编写单独的处理程序,并从处理程序函数中调用一个公共函数。这是正确的吗?
在这里,我们希望有一个带有意图名称作为参数的公共函数,因为我们所做的就是从数据库中获取响应。
我们应该在intentmap集合中设置参数化函数,还是为所有这些意图设置单独的处理函数,并从内部调用通用的参数化函数。请提个建议。
发布于 2020-04-26 18:06:02
是的,使用参数化的函数或类是一个很好的实践。有了这个设置,如果两个意图在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 intents时可能会导致一些问题。这些帮助器意图需要正常意图不使用的额外参数,因此您必须在公共处理程序中考虑它们,或者为它们编写单独的处理程序。如果您不需要这些意图,那么使用单个处理程序没有任何坏处。
还有一件事需要注意,有100个意图是相当多的。记住,意图应该用来表明你的用户说了什么,而不是作为你的流程中的一个步骤。通常,这意味着您只有一个意图来处理用户的yes输入,并且您将使用context来确定您所处的对话步骤。
发布于 2020-04-27 03:50:11
如果您正在使用actions-on-google或dialogflow-fulfillment库,那么可以为每个Intent设置一个Intent处理程序,并让这些处理程序使用您想要的参数调用其他函数,这是最好的方法。
然而..。如果你没有使用这些库,你当然还有其他的选择。
例如,使用multivocal,您可以设置构建器函数,将参数提取到请求环境中并进行数据库调用。如果您在Dialogflow中设置了" Action“字段,则可以(但不必)将其用作Action Handler的基础。
如果您只想坚持使用自己的库,那么可以自己解析JSON,并根据您希望的任何值进行任何函数调用。
https://stackoverflow.com/questions/61437733
复制相似问题