如何在Node.js中使用Twilio同时拨打多个号码播放预录语音
Node.js环境下Twilio批量拨打语音电话实现方案
Twilio原生没有提供批量外呼的接口,我们可以通过并行发起多个单呼请求的方式实现同时拨打多个号码,不需要修改原有单呼的核心配置,只需要做一层循环包装即可。
实现代码
const accountSid = process.env.TWILIO_ACCOUNT_SID; const authToken = process.env.TWILIO_AUTH_TOKEN; const client = require('twilio')(accountSid, authToken); // 填写所有需要拨打的目标号码数组 const targetNumbers = ['+14155551212', '+14155551213', '+14155551214']; // 替换为你自己的Twilio可外呼号码 const twilioCallerNumber = '+15017122661'; // 这里可以替换为你预录语音对应的TwiML,播放音频可改用<Response><Play>音频公网地址</Play></Response> const callContent = '<Response><Say>Ahoy, World!</Say></Response>'; // 为每个目标号码生成呼叫请求Promise const callTaskList = targetNumbers.map(target => { return client.calls.create({ twiml: callContent, to: target, from: twilioCallerNumber }) }) // 并行执行所有呼叫请求,用allSettled保证单个号码呼叫失败不影响其他结果返回 Promise.allSettled(callTaskList) .then(callResults => { callResults.forEach((result, idx) => { const currentNumber = targetNumbers[idx] if(result.status === 'fulfilled') { console.log(`号码${currentNumber}呼叫成功,呼叫SID:${result.value.sid}`) } else { console.log(`号码${currentNumber}呼叫失败,错误信息:${result.reason.message}`) } }) })
注意事项
- 若使用Twilio免费试用账户,所有外呼的目标号码需要先在Twilio后台完成验证,否则会触发呼叫拦截
- Twilio账户默认有并发呼叫数限制,免费版默认仅支持1路并发呼叫,正式版可根据使用需求在后台申请上调并发额度,超出额度的呼叫会自动进入队列延迟触发
- 如果使用预录语音,
标签引用的音频需要是公网可直接访问的MP3/WAV格式资源,不能设置访问鉴权
内容的提问来源于stack exchange,提问作者Darvin Kumar
相关产品推荐
相关产品推荐

