zl程序教程

您现在的位置是:首页 >  其他

当前栏目

使用 Amazon Connect 搭建电话语音通知服务

2023-03-02 10:27:49 时间

1. 背景介绍

在告警等系统中,通常需要在某些事件发生时通知到相关人员。根据紧急程度的不同,常见的通知方式有邮件、短信、即时消息工具,形式以为本为主。这类基于文本的通知的送达率较大程度依赖于接收者的查阅习惯,如查阅不及时则会导致通知信息遗漏、影响通知效果。因此对于非常紧急或者夜间、假期等特殊时段的通知,往往需要更有效的方式。正常情况下,电话语音可以确保接收者近乎实时接收到关键信息,所以可以作为一个更加可靠的通知方式来提升送达率。由于成本、技术复杂度等因素,自行搭建电话呼叫平台不太可行。本文主要介绍如何借助Amazon Connect服务来快速搭建电话语音通知服务,并演示了如何与CloudWatch集成实现电话语音通知告警信息。

2. 基于Amazon Connect的语音通知服务

Amazon Connect是一款方便易用的全渠道云联络中心服务,通过它能够以更低的成本提供卓越的客户服务。使用 Amazon Connect,您可以在几分钟内建立一个联系中心,并可扩展以支持数以百万计的客户。其支持的与客户沟通的方式有:实时消息聊天、电话。本文仅演示通过Amazon Connect的电话外呼功能实现语音通知服务,如对Amazon Connect其他应用场景感兴趣,请联系AWS。本方案的整体架构图如下。

其工作原理如下:

  • Amazon Connect中定义的联系流(Contact Flow)配置拨通被通知号码后的操作流程:
    • 根据需要设置提示音类型
    • 播放提示音
    • 循环播放
    • 挂机结束
  • Lambda通过SDK触发Amazon Connect外呼流程
  • Input来源可以是多种形式,比如API Gateway、EventBridge等,本文以CloudWatch告警作为示例

详细配置过程后文所述。

3. 配置方式

3.1 创建Amazon Connect实例、申请号码及创建联系流

本章节内容主要介绍Amazon Connect的配置,主要配置内容如下:

  • 在AWS控制台创建Amazon Connect实例
  • 在Amazon Connect控制界面申请外呼号码
  • 在AWS控制台支持中心提交工单开通呼叫国内号码能力
  • 在Amazon Connect控制界面创建联系流,定义外呼通知流程

由于Amazon Connect暂未在宁夏、北京区域上线,本文档以海外俄勒冈区域为例进行配置,详细操作步骤如下。

1) 登录亚马逊云科技控制台,服务搜索框输入“connect”,在结果中点击“Amazon Connect”

2) 进入Amazon Connect控制面板,点击“Create Instance”创建Connect实例

3) 根据向导提示选择“在Amazon Connect中创建和管理用户”,根据需要定制访问URL

4) 录入管理员信息。请注意:该账户用于登录至Connect 实例控制界面

5) 允许入站、出站呼叫

6) 数据存储部分保持默认配置,点击“下一步”

7) 在信息汇总页面查看是否有错误,确认无误后点击“创建实例”

8) 等待实例创建完成

9) 实例创建完成后,点击实例“访问URL”,进入Connect实例管理界面

10) 根据提示输入步骤4中配置的管理员用户名、密码,登录至Connect实例管理界面

11) 根据需要切换界面显示语言

12) 点击“探索您的通信通道”旁边的“开始”按钮,申请外呼电话号码

13) 根据需要选择号码的地区、类型及号码,然后点下一步。号码的区别、限制可以参考https://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/contact-center-phone-number.html

14) 回到AWS控制台支持中心创建工单开通呼叫国内号码权限,如截图所示配置工单信息。

15) 请求类型选择对应的区域、限额

16) 用例描述填写将国内号码加入外呼白名单,同时备注使用案例,然后点击“submit”提交工单等待后台处理,审批时间在1天左右。

17) 回到Amazon connect控制界面,点击“查看联系流”超链,进入联系流管理界面

18) 点击“创建联系流”按钮开始定义联系流

19) 配置联系流名称后,在左侧组件栏通过拖拽的方式添加“设置语音”、“播放提示音”、“循环”、“断开连接”组件,并配置连接

20) 点击“设置语音组件”,在弹出框中可以设置语音类型,本文实例需要播放中文语音,因此将语言设置为“中文(普通话)”,语音设置为“Zhiyu”。注意:此处设置的语言类型需要跟后续“播放提示音”中的文本语种兼容。例如中文语音可以正常播放中文、英文文本,但英文语音只能播放英文文本。

21)点击“播放提示音”组件,在弹出框中设置提示内容。此处示例是将一段自定义文本转为语音播放。若需要设置固定的提示内容,则可在文本框输入提示文本并将“解释为”设置为文本。

22) 点击“循环”组件,在弹出框中配置循环次数。此处引入循环的目的是循环播放提示音。

23) 配置完成后点击保存、发布联系流

24) 点击联系流左侧菜单栏的“隐藏其他流信息”超链,记录流相关的connect instance id、contact flow id备后续使用

至此已完成Amazon Connect配置,请留意保存如下信息供后续使用

  • connect instance id:Amazon connect 实例标识
  • contact flow id: 自定义联系流标识

注意:另外如果需要验证呼叫国内号码,请确保开通呼叫国内号码的工单已获批。

3.2 创建Lambda函数

本章节主要展示如何配置Lambda函数通过SDK触发Amazon connect拨打电话,详细配置过程如下:

1) AWS控制台搜索“lambda”,在结果中点击“Lambda”

2) 在Lambda界面点击“创建函数”

3) 如界面提示配置Lambda基本信息,点击“创建函数”


4)在代码编辑部分复制如下代码内容

https://github.com/ensean/aws_config_misc/blob/master/connect/lambda_trigger_connect_call.py

5) 在需要配置通知内容。注意:后续可通过参数方式实现灵活可变的通知内容。

6) 点击“配置”标签,左侧菜单选择“权限”,点击角色名称链接

7) 在Lambda角色配置界面点击“附加策略”按钮

8) 在弹出框中搜索“connect”并在搜索结果中选择“AmazonConnect_FullAccess”,授予Lambda权限通过SDK操作Connect。注意本示例为方便选择了AmazonConnect_FullAccess策略,在实际项目中可结合实际需要配置自定义的IAM策略。

9)返回Lambda配置界面,点击左侧“环境变量”菜单,在控制界面点击“编辑”添加如下环境变量:

  • ContactFlowId:联系流ID
  • DestPhoneNumber:目标号码
  • InstanceId:Amazon Connect 实例 ID
  • SourcePhoneNumber:Amazon Connect中申请的电话号码

10)切换至Lambda“代码”标签页,点击“测试”按钮,根据提示配置一个测试事件

11)填入事件名称,创建事件。注意:由于Connect外呼相关参数已通过环境变量加载,此处配置事件仅为触发Lambda,后续可考虑结合API Gateway通过参数传递。

12)点击“Deploy”按钮,确保所有改动已部署。然后点击“Test”按钮,大约10秒左右环境变量中配置的目标号码即会收到Amazon Connect拨打的电话。

至此您已经实现了通过Lambda使用SDK利用Amazon Connect拨打电话并播放语音通知的功能。基于该方案,配合API Gateway可将目标号码及通知内容作为参数传递至Lambda,实现拨打特定电话播放指定提示音的服务。此外,通过与AWS CloudWatch、EventBridge等服务的集成,也可实现其他功能。后文以CloudWatch为例,实现CloudWatch告警发生时,通过Lambda拨打电话并告知告警内容。

3.3 与CloudWatch集成,实现告警语音通知

在配置此部分功能时,请确保已经创建告警及对应的SNS通知主题。通过Connect拨打电话通知告警信息配置方式如下。

1)更新前文Lambda代码内容为如下文件,主要改动部分如截图所示

https://github.com/ensean/aws_config_misc/blob/master/connect/lambda_trigger_connect_call_cloudwatch.py

2)进入CloudWatch告警SNS Topic控制面板,点击“创建订阅”

3)如截图所示添加Lambda终端节点,点击“创建订阅”确认添加

至此,您已实现CloudWatch告警与Connect的集成,告警发生后SNS会触发Lambda通过Connect拨打电话通知管理员留意处理告警事件。

4. 总结

本文展示了通过Lambda触发Amazon Connect拨打电话并播放语音提示的方案,通过简单扩展后可广泛用于告警信息通知、重要提醒通知等场景。

5. 参考资料

  1. https://aws.amazon.com/cn/connect/?nc1=h_ls
  2. https://aws.amazon.com/blogs/contact-center/automating-outbound-calling-to-customers-using-amazon-connect/

本篇作者

李寅祥

AWS 解决方案架构师,负责基于AWS云计算方案架构的咨询和设计,在国内推广AWS云平台技术和各种解决方案。曾就职于IBM,负责企业私有云方案咨询和架构设计,在基础架构方面有丰富经验。