Twilio与Amazon Connect集成:PSTN重定向及成本咨询
实现Twilio WebSocket通话重定向至Amazon Connect队列的方案
一、能否通过Twilio Python客户端实现PSTN重定向?
可以。由于你是直接通过WebSocket处理通话(而非依赖TwiML/webhook路由),核心是用Twilio的Call Resource API主动操作正在进行的通话,不需要依赖外部webhook服务。
二、具体实现步骤
- 保存通话SID:WebSocket连接建立时,Twilio会通过初始消息发送
callSid,务必把这个SID存在你的应用存储(内存、Redis、数据库都可以),后续API操作必须用到它。 - 触发重定向并调用API:当你的应用满足重定向条件时,调用Twilio Python客户端的
calls.update()方法,将通话转接到目标Amazon Connect的PSTN号码(这个号码必须是Amazon Connect已配置好、能接收PSTN呼叫且关联目标队列的号码)。
示例代码:
这里用到的TwiML是直接通过API提交给Twilio的,不需要对外暴露webhook,完全在你的Python应用内部完成逻辑。from twilio.rest import Client # 初始化Twilio客户端(替换成你的账号SID和Auth Token) account_sid = 'YOUR_ACCOUNT_SID' auth_token = 'YOUR_AUTH_TOKEN' client = Client(account_sid, auth_token) # 从WebSocket初始消息中获取的活跃通话SID call_sid = 'ACTIVE_CALL_SID' # 目标Amazon Connect的PSTN接入号码 target_connect_number = '+1234567890' # 通过API更新通话,执行转接 call = client.calls(call_sid).update( twiml='<Response><Dial>{}</Dial></Response>'.format(target_connect_number) ) print(f"通话已发起重定向,当前状态:{call.status}") - 音频格式兼容:Twilio和Amazon Connect都原生支持8000Hz ulaw格式,转接时不需要额外做音频编码转换,Twilio会自动处理PSTN链路的编码适配。
三、成本相关问题
- 额外成本:会产生Twilio出站通话费用,费用按你使用的Twilio号码所属地区的PSTN出站费率计算,属于额外的转接链路成本。
- Twilio计费终止:转接成功后,Twilio的计费会持续到其侧的通话链路断开。如果你的应用在转接完成后立即关闭WebSocket连接,Twilio会终止当前通话的计费,此时用户通话会直接在Amazon Connect的PSTN链路中继续,Twilio不再收取后续费用。
四、关键注意事项
- 通话状态校验:转接后建议通过Twilio API轮询或配置状态通知webhook(可选),确认转接是否成功,避免出现通话中断。
- Amazon Connect配置:确保目标PSTN号码在Amazon Connect中已正确配置入流规则,关联到目标队列,并且允许来自你的Twilio号码的呼叫。
- 异常处理:调用Twilio API时要捕获异常(如无效通话SID、权限错误、号码不可用等),避免因API失败导致通话异常。
- 替代低成本方案:如果想降低PSTN费用,可考虑用Twilio SIP Trunking连接Amazon Connect,绕开公共PSTN链路,但配置复杂度更高,需要在双方平台配置SIP trunk参数。
内容的提问来源于stack exchange,提问作者user60108
相关产品推荐
相关产品推荐

