AWS Connect外呼接口返回200但未发起通话,是否因使用免费号码?
问题:AWS Connect外呼返回200但目标手机未响铃,免费号码是否是根源?
我需要实现一个基础流程,通过编程方式向客户发起外呼,并播放文本转语音消息(如“您的2FA验证码是123456”)。以下是我使用的C#代码:
var request = new StartOutboundVoiceContactRequest { ContactFlowId = contactFlowId, DestinationPhoneNumber = destinationPhoneNumber, SourcePhoneNumber = sourcePhoneNumber, InstanceId = "INSTANCE-ID" }; var response = await connectClient.StartOutboundVoiceContactAsync(request); // Check the response for success or additional processing. if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { // Contact flow successfully initiated. } else { // Handle errors or failure cases. }
运行代码后,接口返回200状态码,但目标手机号(我的手机)从未响起。我注意到自己使用的是免费号码而非DID号码作为主叫号码,这是否是问题的根源?
回答
- 免费号码确实是核心问题:AWS Connect要求外呼的主叫号码必须是已分配给你的Connect实例的DID(直接拨号)号码,免费临时号码不具备外呼权限,也无法被Connect系统识别为合法发起号码——即便接口返回200,实际外呼请求会在后台被拦截,无法触达目标手机。
- 额外排查要点:
- 验证
ContactFlowId对应的流程配置:确保流程包含有效的TTS播放节点,且没有错误分支逻辑导致外呼提前终止。 - 检查目标号码格式:必须严格遵循E.164标准(例如
+12345678901),格式错误可能导致外呼失败但接口仍返回200。 - 查看AWS Connect联系日志:在控制台的「联系追踪」模块可以查看外呼的全流程状态,能精准定位是号码问题还是流程配置问题。
- 验证
- 修复步骤:
- 在AWS Connect控制台的「号码管理」中购买并分配一个DID号码到你的实例。
- 将代码中的
sourcePhoneNumber替换为该合法DID号码(需用E.164格式)。 - 重新测试外呼,同时通过联系日志确认流程执行情况。
内容的提问来源于stack exchange,提问作者Andrew Duffy
相关产品推荐
相关产品推荐

