Amazon Connect未接来电Lambda邮件通知配置及代码验证咨询
Amazon Connect坐席未接通话邮件通知配置指南
一、联系流中Lambda函数的调用节点
必须在**断开流(Disconnect Flow)**中调用该Lambda函数——只有当通话完全断开后,Amazon Connect才会生成包含完整断开原因的事件数据。具体配置步骤:
- 登录Amazon Connect控制台,进入「联系流」页面,创建或编辑一个断开流
- 在断开流的节点画布中,添加「调用AWS Lambda函数」节点,选择你创建的目标Lambda函数
- 回到主联系流:在转接坐席的节点(如「转接至队列」「转接至坐席」)后,添加「设置联系属性」节点,仅当坐席未接听导致转接失败时,设置自定义属性
DisconnectCause为unattended - 将主联系流中处理坐席未接的分支,引导至「断开/清除」节点,并关联你创建的断开流
二、Lambda代码修正与验证
你的原代码存在几个关键问题,以下是修正后的版本及对应说明:
修正后的Python代码
import json import boto3 from botocore.exceptions import ClientError def lambda_handler(event, context): try: # 安全提取事件数据,避免KeyError contact_data = event.get('Details', {}).get('ContactData', {}) contact_id = contact_data.get('ContactId', '未知ID') # 检查断开原因数组是否有效 disconnect_reasons = contact_data.get('DisconnectReasons', []) if not disconnect_reasons: return {'statusCode': 200, 'message': '无有效断开原因,跳过通知'} disconnect_reason = disconnect_reasons[0] # 提取自定义断开原因属性 disconnect_cause = contact_data.get('Attributes', {}).get('DisconnectCause', '') # 仅匹配坐席未接的场景 if disconnect_reason == 'CONTACT_FLOW_DISCONNECTED' and disconnect_cause == 'unattended': # 邮件内容配置 subject = f"未接来电通知:联系ID {contact_id}" body = f"联系ID {contact_id} 的通话因坐席未接听而断开,请及时跟进。" sender = 'sender@example.com' # 需在SES中完成邮箱验证 recipient = 'recipient@example.com' # 需在SES中验证或属于已验证域名 # 初始化SES客户端(指定你的AWS区域) ses_client = boto3.client('ses', region_name='us-east-1') response = ses_client.send_email( Destination={'ToAddresses': [recipient]}, Message={ 'Body': {'Text': {'Charset': 'UTF-8', 'Data': body}}, 'Subject': {'Charset': 'UTF-8', 'Data': subject} }, Source=sender ) print(f"邮件发送成功,SES响应ID:{response['MessageId']}") return {'statusCode': 200, 'message': '邮件已发送'} else: return {'statusCode': 200, 'message': '不符合未接来电条件,跳过通知'} except ClientError as e: error_msg = e.response['Error']['Message'] print(f"SES调用失败:{error_msg}") return {'statusCode': 500, 'message': f"邮件发送失败:{error_msg}"} except Exception as e: print(f"未知错误:{str(e)}") return {'statusCode': 500, 'message': f"处理失败:{str(e)}"}
代码修正说明
- 安全数据提取:用
get()替代直接键索引,避免因事件数据缺失触发KeyError - 异常捕获:添加SES调用的
ClientError捕获和通用异常处理,确保Lambda返回有效响应 - 必填返回值:Lambda必须返回JSON格式响应,否则Amazon Connect会判定调用失败
- SES前置检查:发件人/收件人邮箱需在Amazon SES完成验证,Lambda执行角色需附加
AmazonSESFullAccess(或最小权限自定义策略) - 区域指定:初始化SES客户端时必须指定你的AWS部署区域(如
us-east-1)
三、额外注意事项
- 确保Amazon Connect的IAM角色拥有调用该Lambda函数的权限
- 测试时可通过Amazon Connect的「测试联系流」功能模拟坐席未接场景,查看CloudWatch日志验证Lambda执行情况
- 若需要获取来电号码等更多信息,可在联系流中添加「获取客户电话号码」节点,将号码存入自定义属性后在Lambda中提取使用
内容的提问来源于stack exchange,提问作者Debash Bora
相关产品推荐
相关产品推荐

