2

想象一下,你有一个有 2 个意图的机器人,每个意图都有自己的 lambda 函数。

如果用户说“你好”,我想ElicitIntent从机器人那里找出他们想要的东西。这在代码中的什么位置?哪个 lambda 函数?我似乎找不到将 lambda 函数附加到整个机器人的地方。

4

3 回答 3

0

你不应该需要一个intent谁的目的是决定intent解雇哪个。

这种交互的推荐方法是有一个额外的常见问题样式Intent,它会触发“你好”和“你能做什么”等,它只是向用户回显一些信息。

然后根据用户的请求选择这两个实体 中的每一个,就好像没有提供帮助一样。intents

于 2017-08-13T23:17:40.660 回答
0

Lex 将根据用户所说的内容(即用户输入)确定意图。之后,它将调用相关的 lambda 函数来进行进一步处理。如果 Lex 无法确定意图,它将向用户提示错误处理消息。

于 2017-11-24T10:34:24.727 回答
0

正如已经提到的,Lex 可以使用其自然语言处理来推断触发的意图。如果您想了解更多相关信息,请点击此处

但是,如果您想指定一个意图,您可以使用ElicitSlot. 如果您需要链接意图,这很有用,但您应该允许 Lex 根据用户的输入推断初始意图。

您可以设置 Lambda 函数来链接意图:

  • 创建新的 Lambda 函数。您可能希望为其附加 CloudWatch 权限,以便更轻松地解决任何问题。
  • 在您的 Lex 机器人中,进入“Lambda 初始化和验证”并选择您刚刚创建的 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 文档,以获得更多见解。

于 2021-11-05T21:41:22.103 回答