TwiML执行后循环回到开头,无法播放感谢语并挂断如何解决?
Twilio TwiML录音后重复流程的解决方法
你的问题出在<Record>标签的默认行为上:当录音完成(用户挂机或超时),Twilio会再次请求当前的TwiML URL,导致整个流程从头重复,所以会再次播放开场白并录音,产生重复的语音邮件,后续的<Say>和<Hangup>永远不会执行。
解决方法是给<Record>添加action属性,指定一个URL,让Twilio在录音完成后请求这个URL获取后续的处理逻辑:
步骤1:修改主TwiML代码
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say voice="Polly.Joanna">Thank you for calling. Please leave a message after the tone.</Say> <!-- 添加action属性指向处理后续逻辑的端点 --> <Record transcribe="true" playBeep="true" transcribeCallback="你的转录回调URL" action="/post-record" finishOnKey="#" <!-- 可选:让用户按#主动结束录音 --> /> </Response>
步骤2:创建/post-record端点的TwiML
这个端点需要返回包含感谢语和挂断指令的TwiML:
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say voice="Polly.Joanna">Thank you.</Say> <Hangup/> </Response>
原理说明
action属性会覆盖Twilio的默认行为,录音完成后不再重复请求原TwiML,而是转向你指定的端点执行后续逻辑,这样就能正常播放感谢语并挂断电话,不会产生重复录音。
内容的提问来源于stack exchange,提问作者Be Kind To New Users
相关产品推荐
相关产品推荐

