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

Twilio顺序呼叫转接、录音发邮件、语音信箱集成实现咨询

Twilio 多号码顺序呼叫+录音邮件推送+语音信箱触发实现方案

实现逻辑

  • 原静态TwiML会按顺序执行所有节点,无法判断前序呼叫是否接通,必须借助Twilio Function实现动态逻辑控制
  • 每一轮呼叫通过*标签的action属性*指定回调地址,判断呼叫结果后决定后续走向
  • 录音生成后通过邮件服务(推荐Twilio集成的SendGrid)将录音URL推送至指定邮箱
  • 三个号码全部未接通时,直接重定向到你已开发完成的语音信箱Function即可

代码示例

主呼叫流程Function代码(Node.js)

exports.handler = function(context, event, callback) {
  const twiml = new Twilio.twiml.VoiceResponse();
  // 配置参数
  const targetNumbers = ['+1123456', '+1234567', '+1234587']; // 按顺序替换成你的A/B/C号码
  const voicemailFunctionUrl = '你的语音信箱Function访问地址';
  const notifyEmail = '指定接收录音的邮箱地址';
  // 从回调参数获取当前呼叫到第几个号码,默认从第0个开始
  const currentDialIndex = event.currentDialIndex ? parseInt(event.currentDialIndex) : 0;
  // 上一轮呼叫的结果
  const dialCallStatus = event.DialCallStatus || '';
  // 上一轮呼叫生成的录音URL
  const recordingUrl = event.RecordingUrl || '';

  // 先处理上一轮呼叫的结果
  if (dialCallStatus === 'completed' && recordingUrl) {
    // 上一轮呼叫已接通,触发邮件发送
    sendEmail(notifyEmail, `通话录音(${new Date().toLocaleString()})`, `录音下载地址:${recordingUrl}.mp3`);
    twiml.hangup();
    return callback(null, twiml);
  }

  // 所有号码都呼叫过了,跳转语音信箱
  if (currentDialIndex >= targetNumbers.length) {
    twiml.redirect(voicemailFunctionUrl);
    return callback(null, twiml);
  }

  // 呼叫当前序号的号码
  twiml.say(`正在转接至第${currentDialIndex+1}位联系人`);
  const dial = twiml.dial({
    record: 'record-from-answer',
    timeout: 10,
    hangupOnStar: true,
    // 回调地址指向当前Function,带上当前呼叫序号参数
    action: `/路径/当前Function名称?currentDialIndex=${currentDialIndex + 1}`,
    method: 'POST'
  });
  dial.number(targetNumbers[currentDialIndex]);

  return callback(null, twiml);
};

// 邮件发送方法,可根据你用的邮件服务修改
function sendEmail(to, subject, content) {
  // 这里以SendGrid为例,你也可以换成其他邮件服务的SDK
  const sgMail = require('@sendgrid/mail');
  sgMail.setApiKey(process.env.SENDGRID_API_KEY); // 在Twilio Function环境变量中配置你的SendGrid密钥
  const msg = {
    to: to,
    from: '发件人邮箱(需在SendGrid中验证)',
    subject: subject,
    text: content,
  };
  sgMail.send(msg);
}

语音信箱适配修改

你已开发的语音信箱Function只需在录音完成的回调逻辑中,复用上面的sendEmail方法,将语音信箱的录音URL发送到指定邮箱即可,原有留言流程无需修改。

注意事项

  • 需要在Twilio控制台的Function配置中,添加@sendgrid/mail依赖,以及配置SENDGRID_API_KEY环境变量
  • 发件人邮箱需要先在SendGrid中完成域名或单邮箱验证,否则会发送失败
  • 把Twilio号码的入呼 webhook 指向上面的主呼叫流程Function地址,请求方式选POST

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:15:00