如何使用TwiML实现同振并要求被叫按键确认后Twilio再桥接通话
实现原理
Twilio 支持采集被叫侧的按键输入,可通过 <Number> 标签的 url 属性实现被叫接听后的预交互流程,只有被叫完成指定操作后才会桥接主叫通话,其余未确认的被叫呼叫会自动终止,符合同振业务的需求。
配置步骤
1. 修改主呼叫TwiML配置
给每个被叫号码的 <Number> 标签新增 url 参数,指向被叫确认流程的服务接口:
<?xml version="1.0" encoding="UTF-8"?> <Response> <Dial> <Number url="/api/callee-confirm">+1800XXXXXXX</Number> <Number url="/api/callee-confirm">+1912XXXXXXX</Number> </Dial> </Response>
2. 开发被叫确认接口TwiML
/api/callee-confirm 接口返回的TwiML负责播放提示音、采集被叫按键:
<?xml version="1.0" encoding="UTF-8"?> <Response> <!-- numDigits设置采集1位按键,timeout设置超时时间为10秒 --> <Gather action="/api/handle-confirm" method="POST" numDigits="1" timeout="10"> <Say voice="alice">您好,有来电呼入,请按1接听,否则将自动挂断</Say> </Gather> <!-- 超时未按键直接挂断 --> <Hangup/> </Response>
3. 开发按键结果处理接口
/api/handle-confirm 接口根据采集到的按键判断是否放行通话:
- 若采集到的按键为
1,返回空的Response即可触发主被叫桥接 - 若采集到其他按键,返回挂断指令即可
<!-- 按键为1时返回的内容 --> <Response> <Say voice="alice">正在为您接通,请稍候</Say> </Response> <!-- 按键不为1时返回的内容 --> <Response> <Hangup/> </Response>
注意事项
- 所有自定义接口需要支持公网访问,Twilio才能正常发起请求
- 如果需要针对不同号码展示差异化提示,可在
url中追加被叫号码参数用于区分 - 若需要屏蔽被叫的语音信箱自动应答,可额外增加
answerOnBridge="true"参数到<Dial>标签中
内容的提问来源于stack exchange,提问作者royce3
相关产品推荐
相关产品推荐

