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

Twilio可编程语音状态回调异常:未接听却触发in-progress状态

Twilio可编程语音状态回调异常:in-progress在呼叫未接听时与ringing同时触发

我使用Twilio Node.js SDK配合Nest.js开发应用,目前遇到一个问题:需要处理answered(对应状态in-progress)事件,但该事件会在ringing触发后立即触发,即便呼叫并未被接听。我是通过第三方应用Hushed接收呼叫的,推测问题可能由Hushed导致。

相关代码

呼叫初始化代码

async init(to: string, from: string): Promise<string> {
    const call = await this.twilio.api.v2010.accounts(<ACCOUNT_SID>).calls.create({
      url: `${API_URL}/api/twilio/stream`,
      statusCallback: `${API_URL}/api/twilio/statusCallback`,
      statusCallbackMethod: 'POST',
      statusCallbackEvent: ['initiated', 'ringing', 'answered', 'completed'],
      to,
      from,
      method: 'POST',
      record: true,
    });

   // 其他业务代码

    return call.sid;
  }

Twilio控制器代码

@Controller('twilio')
export class TwilioController {
  @Post('statusCallback')
  statusCallBack(@Req() request: Request): void {
    console.log(request.body.CallStatus);
  }
}

日志输出

initiated
ringing
in-progress # 和"ringing"同时打印
completed

按照Twilio的预期逻辑,这种状态触发顺序是不符合规范的。


问题分析

这个异常几乎可以确定是第三方通话应用Hushed的行为导致的。部分虚拟号码/通话应用会在呼叫振铃阶段就向Twilio返回"已接听"的信号,而非等待用户实际接听后再触发状态变更,这就导致Twilio误判呼叫状态,同时发送ringing和in-progress事件。

解决办法

  1. 验证其他接收端:换用普通实体手机或Twilio官方客户端接收呼叫,观察是否还会出现同样的状态异常。如果恢复正常,就能坐实是Hushed的问题。
  2. 添加状态校验逻辑:在代码层面增加额外判断,比如结合CallDuration字段——真正被接听的呼叫,CallDuration数值会大于0,而误触发的in-progress事件对应的CallDuration通常为0。修改控制器代码如下:
@Controller('twilio')
export class TwilioController {
  @Post('statusCallback')
  statusCallBack(@Req() request: Request): void {
    const callStatus = request.body.CallStatus;
    const callDuration = parseInt(request.body.CallDuration, 10);
    
    // 仅处理实际接听的in-progress事件
    if (callStatus === 'in-progress' && callDuration > 0) {
      console.log('呼叫已实际接听');
      // 在这里处理你的业务逻辑
    } else {
      console.log(callStatus);
    }
  }
}
  1. 联系Hushed技术支持:如果必须使用Hushed,可以联系他们的技术团队,确认是否存在状态回调的异常配置,或者是否有调整状态返回逻辑的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:40