

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

# Amazon Connect 中用于可重复使用功能的流模块
<a name="contact-flow-modules"></a>

流模块是流中可重复使用的部分。您可以创建它们以在流中提取可重复的逻辑，创建常用函数。例如：

1. 您可以创建一个向客户发送 SMS 短信的模块。

1. 您可以在处理客户想要重置密码、查看银行存款余额或接收一次性密码的流中调用该模块。

使用模块具有以下好处：
+ 简化跨流通用功能的管理。例如，短信模块可以验证电话号码的格式、确认短信选择加入首选项，并与 Amazon Pinpoint 等短信服务集成。
+ 提高维护流的效率。例如，您可以在所有调用流模块的流中快速传播更改。
+ 帮助区分流设计器的职责。例如，您可以同时拥有技术模块设计器和非技术流设计器。
+ Support 通过流程模块提供更多可重复使用和动态体验。例如，您可以定义一个包含自定义 input/output 对象和分支的模块，以便在不同的联系流用例中重复使用。
+ 更轻松地管理流程模块。您可以创建模块的多个不可变版本，以有效地跟踪和测试更改。此外，您可以创建指向特定版本的别名，从而允许您根据需要更新别名，以便在引用别名的所有联系流中实施更改。

## 您可以在何处使用模块
<a name="where-to-use-modules"></a>

您可以在任何[类型](create-contact-flow.md#contact-flow-types)为**入站流**的流中使用模块。

以下类型的流不支持模块：**客户队列**、**客户等候**、**客户私密消息**、**出站私密消息**、**座席等候**、**座席私密消息**、**转接到座席**、**转接到队列**。

## 限制
<a name="modules-limits"></a>
+ 模块不允许覆盖调用流的流本地数据。这意味着您不能在模块中使用以下内容：
  + 外部属性
  + Amazon Lex 属性
  + “客户配置文件”属性
  + Connect 人工智能代理属性
  + 队列指标
  + 存储的客户输入
+ 模块不允许调用其他模块。

要将任何数据传递给模块，或者要从模块中获取任何数据，您都需要传递和检索属性。

例如，您需要从 Lambda（外部属性）写入的数据并将其传递给模块，以便您做出决定。您的 Lambda 可以识别客户是不是 VIP 会员。您需要在模块中输入这些信息，因为如果他们是 VIP 会员，您需要播放提示音，感谢他们成为会员。由于默认的 Lambda 在模块中不可用，您需要使用属性来传递和检索数据。

## 模块的安全配置文件权限
<a name="module-permissions"></a>

在向入站流中添加模块之前，您必须拥有安全配置文件中的权限。默认情况下，**管理员**和**CallCenterManager**安全配置文件具有这些权限。

## 创建基本模块
<a name="use-modules"></a>

有关您可以为每个 Amazon Connect 实例创建的模块数的信息，请参阅[Amazon Connect 服务配额](amazon-connect-service-limits.md)。

1. 使用分配给有权创建模块的安全配置文件的账户登录 Amazon Connect 控制台。

1. 在导航菜单上，选择**路由**、**联系流**。

1. 选择**模块**、**创建流模块**。

1. （可选）在 “**详细信息**” 选项卡中，您可以为模块输入描述并添加 50 个标签。

1. 在 “**设计器**” 选项卡中，将所需的模块添加到您的模块中。完成后，选择**发布**。这使得该模块可用于其他模块和流程。

## 向流中添加模块
<a name="add-modules"></a>

1. 使用分配给有权创建流的安全配置文件的账户登录 Amazon Connect 控制台。创建模块不需要权限。

1. 在导航菜单上，选择**路由**、**联系流**。

1. 选择 “**创建流程**”，然后选择任意流量类型。

1. 要添加模块，请前往**集成**部分，然后选择**调用流模块**。

1. 创建流后，选择**发布**。

## 模块示例
<a name="example-module"></a>

本模块展示了如何通过调用 Lambda 函数获取随机趣事。该模块使用联系人属性 (`$.Attributes.FunFact`) 来检索趣事。调用此模块的流程可以 FunFact 向客户播放，具体取决于他们的传入联系人类型。

您实例中的入站流可以调用这个通用模块来了解趣事。

以下是该 FunFact 模块的图片：

![\[流设计器中的 funfact 模块。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-example1.png)


以下是调用 FunFactSampleFlow 该模块的的图像：

![\[流设计器中的 funfactsampleflow。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-example2.png)


## 模块版本控制和别名
<a name="module-versioning-aliasing"></a>

为了提高维护效率并降低部署风险，模块支持版本控制和别名。模块版本是不可变的快照，可确保每个模块版本保持不变，从而提供一致性和可靠性。模块别名允许您为版本指定描述性名称，以便于识别和管理。当您调用模块并选择 \$1.LATEST 作为别名时，最新版本跟踪会自动更新到最新版本。

### 为模块创建版本
<a name="create-module-version"></a>

您可以创建模块的版本来跟踪更改并维护不同的迭代。

![\[在控制台中为模块创建版本。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-version-create.png)


### 为模块创建别名
<a name="create-module-alias"></a>

您可以创建指向特定模块版本的别名，以便于管理。

![\[在控制台中为模块创建别名。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-alias-create.png)


### 查看模块的特定版本或别名
<a name="view-module-version-alias"></a>

您可以在只读模式下查看模块的特定版本或别名。

![\[在控制台中查看模块版本。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-version-view1.png)


![\[在控制台中查看模块别名。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-version-view2.png)


单击特定版本或别名以只读模式查看模块：

![\[特定模块版本的只读视图。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-readonly-view.png)


### 在流程中使用模块版本和别名
<a name="use-module-versions-alias"></a>

在流程中调用模块时，您可以引用特定的模块版本或别名。

![\[在流程中使用模块版本和别名。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-use-in-flows.png)


## 创建自定义方块模块
<a name="create-custom-block-module"></a>

您可以通过导航到新的或现有流程模块的 “设置” 选项卡开始创建自定义方块模块。在这里，您可以为模块配置输入和输出数据类型。虽然 input/output 架构默认为对象类型，但您可以灵活地为根输入和输出架构中的属性定义其他数据类型，但支持以下数据类型：字符串、数字、整数、布尔值、对象、数组和空。

### 配置自定义方块模块
<a name="configure-custom-block-module"></a>

您可以通过浏览新的或现有流程模块的 “**设置**” 选项卡开始创建自定义块模块，也可以为模块配置任何数据类型的输入和输出，但是，默认情况下， input/output 架构是对象类型。对于根输入和输出架构下的属性，支持的数据类型包括字符串、数字、整数、布尔值、对象、数组和空。

您可以使用**设计器**模式来创建输入和输出模型结构，也可以使用 **JSON 架构**来定义它们。

![\[用于自定义模块配置的设计器模式。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-custom-designer.png)


![\[用于自定义区块模块配置的 JSON 架构模式。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-custom-json.png)


您最多可以为模块定义 8 个自定义分支。

![\[模块的自定义分支配置。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-custom-branches.png)


### 访问与模块相关的属性
<a name="accessing-module-attributes"></a>

作为自定义模块增强的一部分，引入了一个新的命名空间模块，供您访问模块内的模块输入、调用该模块的流程或模块的输出和结果。你可以使用 [Amazon Connect 流数据块：设置联系人属性](set-contact-attributes.md) block 存储这些属性，也可以通过 JSONPath 引用直接使用这些属性。有关模块属性的详细信息，请参阅[Amazon Connect 中可用的联系人属性列表及其 JSONPath 参考文献](connect-attrib-list.md)文档。

### 自定义方块模块示例
<a name="example-custom-block-module"></a>

本模块演示如何通过调用 Lambda 函数，根据客户提供的电话号码和 PIN 进行身份验证。该模块将输入作为电话号码，并输出客户 ID、客户名称和 CustomereMail。该模块还支持 2 个经过身份验证和未经身份验证的自定义分支。调用此模块的流程只需传入电话号码即可对客户进行身份验证，并获取基本的客户信息以供采取进一步行动。

以下是带有设置的身份验证模块的图像：

![\[身份验证模块设置-输入配置。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-auth-settings1.png)


![\[身份验证模块设置-输出配置。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-auth-settings2.png)


![\[身份验证模块设置-分支配置。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-auth-settings3.png)


![\[身份验证模块设置-摘要视图。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-auth-settings4.png)


以下是客户支持流程的示例，该流程调用模块以使用电话号码对客户进行身份验证：

![\[使用身份验证模块的客户支持流程示例。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-auth-flow-example.png)


## 将模块创建为工具
<a name="create-module-as-tools"></a>

为了使各种系统能够在流程之外作为独立执行单元调用流程模块，扩展其实用性，并使用成熟的自动化工具（例如 Q in Connect）支持强大的用例，AI 代理可以使用模块作为工具来完成客户服务交互期间确定的操作，例如执行支付工作流程和自动任务工作流程。这种方法允许您将业务逻辑定义为模块，然后在多个渠道和上下文中执行它，从而在减少开发开销的同时确保一致性。

### 创建新模块作为工具
<a name="create-new-module-as-tool"></a>

![\[创建新模块作为工具接口\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-as-tool-create-new.png)


### 将模块创建为现有模块的工具
<a name="create-module-tool-from-existing"></a>

![\[通过现有模块界面将模块创建为工具\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/module-as-tool-from-existing.png)


### 模块作为工具支持的模块
<a name="module-tool-supported-blocks"></a>

当你创建新的工具模块时，你只会看到模块库中支持的模块列表，用于构建你的模块。要将现有模块转换为工具，您将看到工具模块不支持哪些现有模块。模块即工具支持以下模块列表。


| 数据块 | 
| --- | 
| 案例 | 
| ChangeRoutingPriority | 
| CheckCallProgress | 
| CheckContactAttributes | 
| CheckHoursOfOperation | 
| CheckQueueStatus | 
| CheckStaffing | 
| CheckVoiceId | 
| CreatePersistentContactAssociation | 
| CreateTask | 
| CustomerProfiles | 
| DataTable | 
| DistributeByPercentage | 
| GetQueueMetrics | 
| InvokeFlowModule | 
| InvokeLambdaFunction | 
| InvokeThirdPartyAction | 
| 循环 | 
| Resume | 
| ResumeContact | 
| Return | 
| SendMessage | 
| SetAttributes | 
| SetCallbackNumber | 
| SetCustomerQueueFlow | 
| SetDisconnectFlow | 
| SetEventHook | 
| SetHoldFlow | 
| SetLoggingBehavior | 
| SetQueue | 
| SetRecordingAndAnalyticsBehavior | 
| SetRoutingCriteria | 
| SetRoutingProficiency | 
| SetVoice | 
| SetVoiceId | 
| SetWhisperFlow | 
| SetWisdomAssistant | 
| TagContact | 