如何按国家/地区动态设置 Amazon Connect 出站来电显示?

上次更新时间:2020 年 3 月 25 日

我希望按被叫方所在的国家/地区动态变更 Amazon Connect 出站来电显示。如何进行设置?

简短描述

执行以下操作:

  • 创建 JSON 格式的来电显示列表,然后将其上传到 Amazon Simple Storage Service (Amazon S3) 存储桶。
  • 创建一个 AWS Lambda 函数,标识出站联系人的国家/地区代码,并从 S3 存储桶的 JSON 列表中选择相应的来电显示电话号码。
  • 将 AWS Lambda 函数添加到 Amazon Connect 联系中心实例。
  • 配置 Amazon Connect 联系流,以调用 AWS Lambda 函数。

注意:您可以根据需要和使用案例自定义此解决方案。例如,您可以将来电显示列表存储在 Amazon DynamoDB 表中,而不是 S3 存储桶中,然后重新配置相应的 Lambda 函数和执行角色。

解决方法

创建来电显示列表

创建一个 JSON 文件,其中包含要用于出站来电显示的基于国家/地区的电话号码列表。文件内容采用如下所示的格式:

注意:在本示例中,列表上的国家/地区代码必须遵循 ISO 3166-1 alpha-2 标准,电话号码必须遵循 E.164 标准。有关更多信息,请参阅 ISO 网站上的 ISO 3166 – 国家/地区代码以及 ITU 网站上的 E.164:国际公共电信编号计划

{
    "US": "+12345678901",
    "GB": "+441234567890",
    "Default": "+19876543210"
}

在本示例中,呼叫使用美国电话号码的客户时,Amazon Connect 会使用 +12345678901 作为出站来电显示。呼叫使用英国电话号码的客户时,Amazon Connect 会使用 +441234567890。呼叫未在 JSON 文件中列出的国家/地区的客户时,Amazon Connect 会使用 +19876543210

您的出站来电显示电话号码不必来自您发起呼叫的国家/地区。例如,如果您是一家位于美国的公司,想在呼叫西欧国家/地区时使用基于英国的出站来电显示电话号码,则可以执行以下操作:

{
    "GB": "+441234567890",
    "FR": "+441234567890",
    "DE": "+441234567890",
    "IE": "+441234567890",
    "Default": "+19876543210"
}

在本示例中,呼叫使用英国、法国、德国或爱尔兰电话号码的客户时,Amazon Connect 使用 +441234567890 作为出站来电显示。对于其他国家/地区,Amazon Connect 使用 +19876543210

注意:呼叫路由期间,如果由于任何原因无法调用 Lambda 函数,则 Amazon Connect 会使用队列的默认出站电话号码作为来电显示。此号码为在 Amazon Connect 实例的队列设置中配置的号码。有关更多信息,请参阅设置出站来电显示

将来电显示列表上传到 S3 存储桶

创建来电显示列表 JSON 文件后,将此文件上传到 S3 存储桶

创建 Lambda 执行角色

Lambda 函数的执行角色必须拥有 Amazon S3 读取权限,才能读取上传到 S3 存储桶的 JSON 对象。您可以在 AWS Identity and Access Management (IAM) 控制台中创建执行角色,然后将 AWS 管理的策略 AmazonS3ReadOnlyAccess 附加到该角色。

提示:您可以创建自己的 IAM 策略,来限制执行角色对特定 S3 存储桶的访问。如需查看示例策略,请参阅 Amazon S3:允许对 S3 存储桶中的对象进行读写访问

创建 Lambda 函数

使用在上一步中创建的执行角色创建 Lambda 函数。在函数代码中,添加检查来自 Amazon Connect 的传入 JSON 请求的逻辑。有关更多信息,请参阅如何引用联系人属性和以下对 Lambda 函数的示例 JSON 请求

{
    "Details": {
        "ContactData": {
            "Attributes": {},
            "Channel": "VOICE",
            "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "CustomerEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            },
            "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
            "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
            "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXX",
            "Queue": "QueueName",
            "SystemEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            }
        },
        "Parameters": {
            "sentAttributeKey": "sentAttributeValue"
        }
    },
    "Name": "ContactFlowEvent"
}

例如,您可以使用 aws-support-tools GitHub 存储库的 DynamicOutboundCallerID 中的 Python 函数。该函数代码可与 Python 3.6(或更高版本)运行时一起使用,并按原样提供。

如果使用示例函数代码,则必须在函数中配置以下环境变量

  • BUCKET_NAME:存储 JSON 对象的 S3 存储桶的名称。
  • COUNTRY_ROUTING_LIST_KEY:存储在 S3 存储桶中的 JSON 文件的密钥。

例如,如果 JSON 对象存储在 s3://hello/world/list.json 中,则 BUCKET_NAME 是“hello”,而 COUNTRY_ROUTING_LIST_KEY 是“world/list.json”。

创建部署程序包

DynamicOutboundCallerID 中的示例 Python 函数使用 phonenumbers Python 库。有关更多信息,请参阅 Python Package Index (PyPI) 网站上的 phonenumbers

要在函数中添加第三方库,必须创建一个部署程序包。您可以在包含 lambda_function.py 的文件夹中运行以下命令来创建部署程序包:

注意:这些命令仅适用于 Linux/Unix/macOS 系统。

$ pip install phonenumbers --target ./
$ zip -r9 function.zip ./

有关更多信息,请参阅 Python 中的 AWS Lambda 部署程序包

将 Lambda 函数添加到实例中

Amazon Connect 控制台中,将 Lambda 函数添加到联系中心实例。

创建出站私密消息流

如果您尚未执行此操作,请创建一个出站私密消息联系流。

重要提示:要创建和编辑联系流,您必须以用户身份登录您的 Amazon Connect 实例,而且该用户身份要在其安全配置文件中有足够权限

  1. 使用您的访问 URL (https://alias.awsapps.com/connect/login) 登录您的 Amazon Connect 实例。
    注意:请将 alias 替换成您的实例的别名
  2. 在左侧导航窗格中,选择路由,然后选择联系流
  3. 联系流页面上,选择创建联系流按钮旁的向下箭头,然后选择创建出站私密消息流
  4. 在联系流设计器的输入名称部分,为联系流输入名称。
  5. 选择保存

有关更多信息,请参阅创建新的联系流

添加调用 AWS Lambda 函数数据块

  1. 在联系流设计器中,展开集成
  2. 调用 AWS Lambda 函数数据块拖放到画布上。
  3. 选择数据块标题(调用 AWS Lambda 函数)。这时将打开数据块的设置菜单。
  4. 函数 ARN 下,选择选择函数,然后选择已添加到实例的 Lambda 函数。
  5. (可选)在超时(最多 8 秒)部分,输入超时之前 Amazon Connect 等待 Lambda 响应的秒数。
  6. 选择保存

当 Amazon Connect 调用 Lambda 函数时,该函数会返回一个 JSON 响应,如下所示:

{
    "customer_number": "<Customer's phone number that you're calling>",
    "customer_country": "<Country of the customer's phone number>",
    "outbound_number": "<Outbound phone number that Lambda loads from Amazon S3 and sends to Amazon Connect>",
    "outbound_country": "<Country of the outbound phone number that Lambda sends to Amazon Connect>",
    "default_queue_outbound_number": "<Default outbound phone number set up for the queue>",
    "default_queue_outbound_country": "<Country of the default outbound phone number>"
}

有关更多信息,请参阅调用 Lambda 函数以及联系数据块:调用 AWS Lambda 函数

添加呼叫电话号码数据块

配置此数据块,以使用 Lambda 的 outbound_number 作为来电显示电话号码。

  1. 在联系流设计器中,展开交互
  2. 呼叫电话号码数据块拖放到画布上。
  3. 选择数据块标题(呼叫电话号码)。这时将打开数据块的设置菜单。
  4. 执行以下操作:
    选择要显示的来电显示号码(可选)复选框。
    选择使用属性
    类型部分,请选择外部
    属性部分,请输入 outbound_number
  5. 选择保存

有关更多信息,请参阅启动出站呼叫以及联系数据块:呼叫电话号码

完成联系流

  1. 根据需要,为使用案例添加并连接更多联系数据块。有关示例使用案例,请参阅示例联系流
  2. 将联系流中的所有连接器连接到数据块。请确保将调用 AWS Lambda 函数数据块的 Success 节点连接到呼叫电话号码数据块。此外,请确保将呼叫电话号码数据块的 Success节点连接到结束流/恢复数据块。您必须至少使用以下数据块:
    入口点 > 调用 AWS Lambda 函数 > 呼叫电话号码 > 结束流/恢复
  3. 保存并发布联系流。

有关更多信息,请参阅创建新的联系流

使用出站私密消息流配置队列

在分配了代理的路由配置文件中,标识默认出站队列。有关更多信息,请参阅创建路由配置文件RoutingProfile 对象

请执行以下操作,编辑队列:

  1. 在 Amazon Connect 实例上,在左侧导航窗格中,选择路由,然后选择队列
  2. 队列页面上,选择标识为默认出站队列的队列的名称。
  3. 编辑队列页面上,对出站私密消息流(可选)搜索并选择您创建的出站私密消息流的名称。
  4. 选择保存