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

Twilio来电Webhook问题:发送DTMF后无法录制后续通话

问题分析与修复方案

你的代码逻辑顺序搞反了,这才导致DTMF音没起作用,也录不到发送后的通话内容:

  1. 核心问题:Twilio是按指令顺序依次执行的,vr.record()是会阻塞流程的操作——一旦启动录制,它会持续到达到设置的maxLength或触发停止条件,之后才会执行后续的vr.play()和挂断操作。这意味着你发送DTMF音的时候,录制早就结束了,自然不会被转录,更录不到发完DTMF后的通话内容。

  2. 调整逻辑顺序:得先完成问候语播放和DTMF音发送,再启动录制操作,确保录制覆盖发送DTMF之后的通话内容。

修改后的代码示例:

const vr = new VoiceResponse();

// 先播放问候语
vr.say('Hello');

// 先发送DTMF音:wwww是等待4秒后发送1,可根据对方IVR响应速度调整等待时长
vr.play({
  digits: 'wwww1',
});

// 启动录制,此时录制的是发送DTMF后的通话内容
vr.record({
  maxLength: 60,
  transcribe: true,
  transcribeCallback: '/voice/text',
});

// 录制结束后挂断通话
vr.hangup();

res.setHeader('Content-Type', 'text/xml');
return res.status(200).send(vr.toString());
  1. 额外注意事项:
  • 如果对方IVR响应较慢,可以增加play参数中的w数量(每个w代表1秒等待),确保DTMF音在IVR提示完成后发送,避免被忽略。
  • 确认你的Twilio号码的来电Webhook配置正确,请求方式(GET/POST)与后端接收逻辑匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:15:48