基于Hook触发的AWS Connect机器人外呼实现方案技术求助
AWS Connect 机器人外呼实现指南
1. 发起外呼的核心方法:StartOutboundVoiceContact API
不管是单个非美国地区号码还是批量号码列表,都必须通过AWS Connect的StartOutboundVoiceContact API触发外呼,Lambda是最适合的执行载体(Hook通知可直接触发Lambda,比如通过API Gateway接收Hook请求,或Hook推送至SNS再触发Lambda)。
单个非美号码外呼(Python Lambda示例)
import boto3 def lambda_handler(event, context): # 初始化Connect客户端,指定实例所在区域 connect_client = boto3.client('connect', region_name='ap-southeast-1') # 非美号码必须带国际区号前缀,例如+86(中国)、+44(英国) response = connect_client.start_outbound_voice_contact( DestinationPhoneNumber='+8613xxxxxxxxx', ContactFlowId='arn:aws:connect:ap-southeast-1:123456789012:instance/xxxxxx/contact-flow/xxxxxx', InstanceId='你的Connect实例ID', SourcePhoneNumber='你的已验证外呼号码(需与实例同区域)' ) return {'statusCode': 200, 'callId': response['ContactId']}
- 关键注意事项:
- 目标号码必须携带国际区号前缀(+国家码),不能使用本地格式
- 外呼源号码
SourcePhoneNumber必须是AWS Connect实例所在区域已验证的号码(可在Connect控制台的「号码管理」中配置) - Lambda的IAM角色需添加
connect:StartOutboundVoiceContact权限,同时确保角色能访问你的Connect实例
批量号码外呼处理
如果需要外呼号码列表,可通过以下方式实现:
- 直接在Lambda中遍历号码列表,逐个调用
StartOutboundVoiceContactAPI - 若号码数量较多,建议先将号码存入SQS队列,再用Lambda触发SQS消息异步处理,避免Lambda执行超时
2. 全组件整合流程
完整的触发链路如下:
- 客户服务的Hook通知触发Lambda(可通过API Gateway接收Hook HTTP请求,或Hook推送至SNS主题关联Lambda)
- Lambda调用
StartOutboundVoiceContactAPI,传入目标号码、联系流ID、实例ID等参数 - AWS Connect启动外呼,执行你已配置的联系流:调用Lambda从S3读取Polly生成的音频,播放给客户
3. 常见问题排查
- 非美号码外呼失败:检查号码格式是否正确(带国际区号)、外呼源号码是否在实例区域可用、Connect实例是否支持该国家/地区的外呼
- 音频无法播放:确保联系流中的Lambda有S3桶读取权限,音频格式为Connect支持的类型(如MP3)
- API调用权限错误:确认Lambda的IAM角色已配置
connect:StartOutboundVoiceContact权限,且角色信任策略允许Lambda调用Connect API
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

