

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

# 创建基础架构
<a name="create-architecture"></a>

在定义了组织的目标并概述了客户接触旅程之后，您可以使用该信息来定义 IVR 系统的基础架构。这些数据点对于创建既模块化又可扩展的 IVR 架构至关重要。建立良好的基础框架的关键原则是：
+ 消除静态设计
+ 确定可重复的流程

## 消除静态设计
<a name="static-design"></a>

开发者在设计 IVR 系统时常犯的一个错误是在流程内引入静态信息或硬编码逻辑。此静态信息包括提示消息、要调用的下一个呼叫流程的值或要将呼叫路由到的技能组。它也可以是从 IVR 调用的 API 端点的地址或返回的变量，这些变量随后用于 IVR 系统内的分支逻辑。

在 IVR 系统中使用静态值会使实时跟踪和更改静态值变得困难，并导致流程冗余。最佳实践是尽可能采用动态设计。我们来看一个设计多语言 IVR 系统的示例，以更好地理解这一点。

**静态方法：**

通常，在设计多语言 IVR 系统时，开发者会确定客户的首选语言，然后创建相同流程的两个版本。第一个版本使用语言 A 对提示消息进行硬编码，第二个版本可能使用语言 B 对消息进行硬编码，如下图所示。

 此方法很难扩展，因为开发者必须维护同一流程的不同版本。每次添加新语言时，他们还必须创建流程的新版本。

![设计 IVR 系统的静态方法](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/ivr-design-on-connect/images/static.png)


此外，他们对一个流程中的业务逻辑所做的任何更改都必须手动复制到其他版本。这使得 IVR 设计变得混乱且非模块化，并增加了创新的上市时间。

**动态方法：**

解决此问题的推荐方法是将提示消息分配给变量，而不是在 IVR 设计器的提示块中使用静态值。根据客户选择的语言，从外部数据库调用提示的值并填充变量以播放这些消息，如以下流程图所示。使用此方法时，您可以保持单个 IVR 流程，并轻松扩展到 *n* 种语言。作为开发者，您可以向外部数据库添加语言提示，并使用 API 根据客户在 IVR 系统中的选择或从 CRM 查询返回的数据调用它们。这还可以保护 IVR 系统免受业务逻辑中任何更改的影响。使用此模型时，确保您有一个默认分支，其中包含一组最少的静态消息，以便在数据库或查询失败时可以使用。



![设计 IVR 系统的动态方法](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/ivr-design-on-connect/images/dynamic.png)


## 确定可重复的流程
<a name="repeatable-processes"></a>

识别客户体验中的可重复模式有助于消除 IVR 系统中的冗余组件。您可以为重复的使用案例创建可重复使用的逻辑或模块，并根据需要在各种呼叫流中调用它们。例如，如果销售和支持团队都需要在 IVR 系统内发送 SMS 通知，您可以创建一个可重复使用的*发送 SMS* 模块，该模块可用于两个业务领域。通过使用此方法，您可以维护单个流程，并且对该模块的任何更新都将以简化的方式反映在所有 LOB 中。可重复过程的其他一些常见示例是：
+ 根据客户输入，为 IVR 流程分配语言选择。
+ 在 IVR 系统中实现付款处理。
+ 呼叫方身份验证逻辑。
+ 使用 CRM 查找来识别客户。通过对 CRM 中的客户查找模块进行模块化，您可以将专用连接（通常使用专有语言）转换为简单的 IVR 块。然后，任何开发客户体验的人都可以访问和使用这些 IVR 块。
+ 执行紧急消息路由。