想象一下,你有一个有 2 个意图的机器人,每个意图都有自己的 lambda 函数。
如果用户说“你好”,我想ElicitIntent
从机器人那里找出他们想要的东西。这在代码中的什么位置?哪个 lambda 函数?我似乎找不到将 lambda 函数附加到整个机器人的地方。
想象一下,你有一个有 2 个意图的机器人,每个意图都有自己的 lambda 函数。
如果用户说“你好”,我想ElicitIntent
从机器人那里找出他们想要的东西。这在代码中的什么位置?哪个 lambda 函数?我似乎找不到将 lambda 函数附加到整个机器人的地方。
你不应该需要一个intent
谁的目的是决定intent
解雇哪个。
这种交互的推荐方法是有一个额外的常见问题样式Intent
,它会触发“你好”和“你能做什么”等,它只是向用户回显一些信息。
然后根据用户的请求选择这两个实体 中的每一个,就好像没有提供帮助一样。intents
Lex 将根据用户所说的内容(即用户输入)确定意图。之后,它将调用相关的 lambda 函数来进行进一步处理。如果 Lex 无法确定意图,它将向用户提示错误处理消息。
正如已经提到的,Lex 可以使用其自然语言处理来推断触发的意图。如果您想了解更多相关信息,请点击此处。
但是,如果您想指定一个意图,您可以使用ElicitSlot
. 如果您需要链接意图,这很有用,但您应该允许 Lex 根据用户的输入推断初始意图。
您可以设置 Lambda 函数来链接意图:
在这张图片中,我的 Lambda 函数被调用lex-advising-func
:
这使 Lex 可以访问调用 Lambda。它将为每个插槽调用它。
现在,链接你的意图:
return {
dialogAction: {
type: 'ElicitSlot',
intentName: <Name of intent to be invoked>,
slotToElicit: <Name of the slot you want to invoke in that intent>
}
}
这会将意图更改为您指定的意图并开始该意图的对话。
您可能还想查看Lambda 的 Lex 文档,以获得更多见解。