使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何使用初始化/验证或履行 Lambda 函数来更改我的 Amazon Lex 机器人的对话流程?

1 分钟阅读
0

我想使用初始化/验证或履行 AWS Lambda 函数来更改我的 Amazon Lex 机器人的对话流程。

解决方案

**注意:**本文中的示例使用的是第 2 版 Amazon Lex 控制台。如果您使用的是第 1 版,请在导航窗格中选择 Switch to the new Lex v2 console

Lambda 响应语法指定了 Amazon Lex 预期 Lambda 函数响应要采用的格式。确保在响应中包含必填字段

使用“ElicitSlot”类型更改对话流程

要使用 ElicitSlot 类型更改对话流程,请按照以下格式传递来自 Lambda 代码挂钩的响应:

{
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "<slot-name-to-elicit>",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "<intent-name-to-elicit>",
            "state": "InProgress"
        }
    }
}

在返回响应后,Amazon Lex 会引发一个名为 ** slot-name-to-elicit** 的插槽,该插槽属于 intent-name-to-elicit 意图。

例如,您有一个 CreateUser 意图,其插槽会提示输入用户名。使用 Lambda 函数检查是否已经存在此用户名。如果存在此用户名,则会出于相同的意图再次引发用户名插槽。

使用“ElicitIntent”类型更改对话流程

要使用 ElicitIntent 类型更改对话流程,请按照以下格式传递来自 Lambda 代码挂钩的响应:

{
        "sessionState": {
        "dialogAction": {
            "type": "ElicitIntent"
         }
     },
     "messages": [{
         "contentType": "<content-type>",
         "content": "<message>"
     }]
 }

在 Amazon Lex 返回响应后,用户会看到消息占位符中指定的消息。下一个用户输入会被视为意图言语,并以 nluConfidence 最高分调用该意图。

例如,如果您的机器人履行了用户的意图,则要将该机器人置于收听状态。然后,用户可以提供另外一种言语来调用另外一个意图。

使用“Delegate”类型更改对话流程

在指定新意图时,您可以使用 Delegate 类型更改开始意图。要使用 Delegate 类型,请按照以下格式传递来自 Lambda 代码挂钩的响应:

{
    'sessionState': {
        'dialogAction': {
            'type': 'Delegate'
        },
        'intent': {
            'name': '<intent-name-to-elicit>',
            'state': 'InProgress'
        }
    }
}

例如,您的机器人有意图 ABC。如果用户对意图 A 中的插槽提供了响应,则 Lambda 函数会检查用户输入。然后,此函数会调用意图 BC

相关信息

GitHub 网站上的 amazon-lex-v2-dialogation

AWS 官方
AWS 官方已更新 1 年前