You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分Twilio Gather流程中超时与用户无输入仅按#的两种场景

如何区分Twilio <Gather> 步骤的超时触发与用户主动按#退出场景

可以在不修改现有finishOnKey="#"配置、不调整已上线录音提示的前提下区分两种场景,核心逻辑基于Twilio <Gather> 动词的默认请求触发规则实现:

  • 场景1:用户未输入其他内容仅按下#
    只要用户触发了finishOnKey(也就是按下#),无论输入内容是否为空,Twilio都会主动请求<Gather>标签中指定的action地址,且会在请求参数中携带Digits=%23(URL解码后为单独的#字符),不会执行<Gather>标签后的<Redirect>逻辑。
  • 场景2:用户超时未做任何输入
    只有当触发timeout时限、用户全程没有任何按键输入时,Twilio才会跳过<Gather>的action请求,直接执行后续的<Redirect>逻辑,请求会携带你额外拼接的timeout=true参数,且不会携带Digits参数。

改造方案(无需修改现有前端配置)

你只需要调整服务端接口的逻辑即可:

  1. 处理普通采集步骤的接口(对应https://localhost:8001/api/Step无额外参数的请求)新增判断:
// 示例伪代码,可根据你的技术栈调整
const digits = req.body.Digits || req.query.Digits
if (digits === '#') {
  // 执行用户主动按#退出的逻辑
} else {
  // 执行正常的信息采集步骤逻辑,若Digits末尾带#可直接截断取有效输入
}
  1. 处理超时跳转的同接口分支新增判断:
const isTimeout = req.query.timeout === 'true'
if (isTimeout) {
  // 执行超时对应的独立跳转逻辑
}

该方案完全复用你现有配置的timeout="7"、finishOnKey="#"规则,无需修改已上线的语音提示内容,也不会影响用户将#作为输入结束键的正常使用。

内容的提问来源于stack exchange,提问作者James Meisler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 14:36:04