

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 调用对话框代码挂钩


当 Amazon Lex V2 向用户发送消息时，在对话的每一步中，您都可以使用 Lambda 函数作为对话的下一步。您可以使用该函数，根据对话的当前状态来实现业务逻辑。

运行的 Lambda 函数与您正在使用的机器人别名相关联。要在意图中的所有对话框代码挂钩中调用 Lambda 函数，您必须针对此意图选择**使用 Lambda 函数来初始化和验证**。有关选择 Lambda 函数的更多信息，请参阅[为你的 Amazon Lex V2 机器人创建AWS Lambda函数](lambda-attach.md)。

使用 Lambda 函数需要两个步骤。首先，您需要在对话中的任何节点激活对话框代码挂钩。接下来，您需要将对话的下一步设置为使用对话框代码挂钩。

下图显示了已激活的对话框代码挂钩。

![\[显示条件响应代码挂钩处于活动状态。\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/code-hook-active.png)


接下来，将代码挂钩设置为对话步骤的下一个操作。为此，您可以将对话的下一步配置为“调用对话框代码挂钩”。请参见下图中所示的条件分支，在该条件分支中，调用对话框代码挂钩是对话默认路径的下一步。

![\[将代码挂钩显示为对话的下一步的条件分支。\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/code-hook-choose.png)


当代码挂钩处于活动状态时，您可以设置返回给用户的以下三个响应：
+ **成功**：在 Lambda 函数成功完成时发送该响应。
+ **失败**：如果运行 Lambda 函数时出现问题，或者 Lambda 函数返回的 `intent.state` 值为 `Failed`，则发送该响应。
+ **超时**：如果 Lambda 函数未在其配置的超时时间内完成，则发送该响应。

![\[显示 Lambda 函数运行后的可用消息选项的流程图。\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/conditional-code-hook.png)


选择 **Lambda 对话框代码挂钩**，然后选择**高级选项**以查看与 Lambda 函数调用相对应的三个响应选项。您可以设置值、配置后续步骤，并应用与每个响应相对应的条件以设计对话流程。如果没有条件或明确的下一步操作，Amazon Lex V2 将根据对话的当前状态决定下一步操作。

您还可以在**高级选项**页面上选择启用或禁用 Lambda 函数调用。启用该函数后，将通过 Lambda 调用来调用对话框代码挂钩，然后根据 Lambda 调用结果显示成功、失败或超时消息。禁用该功能后，Amazon Lex V2 不运行 Lambda 函数，而是将对话代码挂钩视作成功并继续运行。

您还可以设置调用标签，该标签将在被该消息调用时发送到 Lambda 函数。您可以使用该调用标签来帮助识别要运行的 Lambda 函数的部分。

**注意**  
Amazon Lex V2 于 2022 年 8 月 17 日发布了对用户对话管理方式的更改。借助此更改，您可以更好地控制用户的对话路径。有关更多信息，请参阅 [Amazon Lex V2 中的对话流更改](understanding-new-flows.md)。2022 年 8 月 17 日之前创建的机器人不支持对话框代码挂钩消息、设置值、配置后续步骤和添加条件。