使用VXML的disconnect元素模拟通话挂断失败问题咨询
解决VXML中
<disconnect>元素未生效的问题 你的问题出在VXML结构不规范以及非标准扩展元素干扰,导致<disconnect>所在的表单未被执行,后续流程继续运行。以下是修复方案:
核心问题分析
- 非标准结构导致表单未激活:标准VXML规定
<prompt>不能直接作为<vxml>的根级子元素,必须嵌套在<form>、<block>等可执行元素内。你原始代码中根节点下的多个<prompt>属于不符合规范的写法,部分平台会优先执行这些根级元素,跳过了包含<disconnect>的<F1>表单。 - 扩展元素覆盖挂断行为:
<afterprompt_action>是Voxeo的自定义扩展,它会强制会话执行完所有提示后再等待指定时间挂断,直接覆盖了<disconnect>的即时挂断逻辑。
修复后的代码示例
<vxml version="2.1"> <form id="F1"> <block> <prompt mode="recording" delay="500">./audio/agent.wav</prompt> <prompt> Getting ready to disconnect the call, which will throw a connection.disconnect event. </prompt> </block> <block> <disconnect/> </block> </form> </vxml>
关键调整说明
- 将所有提示内容移至
<F1>表单的<block>内,确保会话初始进入该表单并执行所有逻辑,包括<disconnect>。 - 移除根节点下的所有独立
<prompt>和<afterprompt_action>,避免非标准行为干扰挂断逻辑。 - 如果平台需要明确指定初始执行的表单,可以在
<vxml>标签中添加initial="F1"属性,确保会话入口正确。
内容的提问来源于stack exchange,提问作者Dr.Tautology
相关产品推荐
相关产品推荐

