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

基于RECORD TwiML动词实现来电语音信箱:能否按呼叫被拒条件触发?

仅在呼叫被拒时触发RECORD TwiML的实现方案

当然可行!要实现这个需求,核心是利用Twilio返回的**呼叫状态(CallStatus)**来区分「被拒接」和「未接听」两种场景,然后针对性返回包含<Record>动词的TwiML。

先明确两种场景的呼叫状态差异

Twilio会在呼叫状态变化时,通过回调向你的服务器发送CallStatus参数:

  • 呼叫被拒接:对应状态为busy(对方占线)或canceled(对方主动拒接),不同运营商可能略有差异,但这两个状态是核心标识。
  • 呼叫未接听:对应状态为no-answer,即呼叫响铃直到超时无人接听。

具体实现步骤

  1. 配置呼叫状态回调:在Twilio控制台的号码设置中,将「Call Status Callback」设置为你的Webhook接口地址,确保Twilio能把呼叫状态变化通知到你的服务。
  2. 在Webhook中判断状态并返回TwiML:根据收到的CallStatus值,决定是否返回<Record>动词。

代码示例(Node.js + Express)

以下是一个简单的后端处理逻辑,你可以根据自己的技术栈调整:

const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: true }));

// 处理呼叫状态回调的接口
app.post('/call-status-handler', (req, res) => {
  const callStatus = req.body.CallStatus;
  let twimlResponse = '';

  // 被拒接的情况:触发录音
  if (callStatus === 'busy' || callStatus === 'canceled') {
    twimlResponse = `
      <Response>
        <Say voice="alice">您好,对方暂时无法接听,请在提示音后留言,结束时请按#键。</Say>
        <Record action="/save-recording" method="POST" finishOnKey="#" maxLength="30" />
      </Response>
    `;
  } 
  // 未接听的情况:不触发录音,直接提示后挂断
  else if (callStatus === 'no-answer') {
    twimlResponse = `
      <Response>
        <Say voice="alice">对方无人接听,我们稍后再尝试联系。</Say>
        <Hangup />
      </Response>
    `;
  } 
  // 其他状态(如已接通):按需处理
  else {
    twimlResponse = '<Response><Hangup /></Response>';
  }

  res.type('text/xml');
  res.send(twimlResponse);
});

// 处理录音完成后的回调(可选)
app.post('/save-recording', (req, res) => {
  const recordingUrl = req.body.RecordingUrl;
  // 这里可以把录音URL存储到数据库,或者做其他处理
  res.send('<Response><Hangup /></Response>');
});

app.listen(3000, () => {
  console.log('服务已启动在3000端口');
});

注意事项

  • 部分地区运营商的拒接状态可能返回busy而非canceled,建议实际测试几种拒接场景,确认CallStatus的具体值。
  • 如果使用Twilio的呼叫队列、IVR等高级功能,需要结合这些功能的回调逻辑调整状态判断,但核心思路还是基于CallStatus的区分。
  • 确保你的Webhook接口能被Twilio访问(公网可访问,或使用ngrok等工具做本地调试)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:45:56