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

使用Twilio Voice JS SDK v2.1.1发起外呼时遇create方法未定义错误

问题分析与解决方案

核心问题1:异步时序错误

你调用_this.bindVoice()后立刻执行_this.voice.create(),但bindVoice内部的getVoiceCapabilityToken()是异步请求,此时this.voice还没完成初始化——哪怕断点看到_this.voice存在,也可能是之前残留的旧实例,而非当前异步流程中创建的新实例。

核心问题2:方法名误用

Twilio Voice JS SDK v2.1.1中,Twilio.Device发起呼叫的方法是connect(),而非create()。你参考的文档里的create大概率是后端API(比如Node.js服务端)的方法,不是前端SDK的方法。

修正后的代码

1. 调整异步逻辑(改用async/await)

async bindVoice(): Promise<void> {
  const voiceToken = await this.tcemsService.getVoiceCapabilityToken().toPromise();
  this.voice = new Twilio.Device(voiceToken.token, {
    disableAudioContextSounds: true
  });
}

2. 正确发起呼叫

// 调用时要等待bindVoice完成
await _this.bindVoice();
_this.voice.connect({
  params: {
    to: '+14071234567',
    from: '+14079876543'
  },
  twiml: '<Say>Connecting Call</Say>'
});

额外注意事项

  • 确保Capability Token已正确配置外呼权限,否则即使方法正确也会呼叫失败。
  • 如果你的Twilio后端是通过TwiML App处理呼叫,twiml参数可以省略,转而在TwiML App对应的URL返回呼叫逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:50:24