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

如何在Twilio Dial功能中实现AMD检测与语音信箱预录语音播放

最佳实现方案:利用Dial的Action回调处理未接/语音信箱场景

嘿,这个需求其实Twilio的Dial功能本身就支持,核心是借助Dial的action参数来处理呼叫结束后的回调逻辑,我给你一步步拆解具体实现:

1. 修改现有Dial代码,添加Action回调

首先,你需要在初始化Dial对象时,指定一个action URL——当Dial发起的呼叫结束(不管是未接、转语音信箱还是正常挂断),Twilio会向这个URL发送一个POST请求,携带呼叫状态等关键参数。

修改后的代码如下:

var callerId = ConfigurationManager.AppSettings["TwilioCallerId"];
var response = new VoiceResponse();
// 配置action指向你的后端回调端点(确保Twilio能访问到这个地址)
var dial = new Dial(callerId: callerId, action: new Uri("/api/handle-call-status", UriKind.Relative));

if (Regex.IsMatch(to, "^[\\d\\+\\-\\(\\) ]+$")){
    // 可选:开启语音信箱检测,让Twilio更精准识别语音信箱场景
    dial.Number(to, detectVoicemail: true);
}else{
    dial.Client(to);
}

response.Dial(dial);

2. 实现Action回调端点

接下来,你需要在后端实现这个/api/handle-call-status端点,用来接收Twilio的回调请求,根据呼叫状态决定是否播放预录留言。

以ASP.NET为例,代码示例如下:

public HttpResponseMessage HandleCallStatus()
{
    // 从Twilio的回调请求中获取呼叫状态
    var dialCallStatus = Request.Form["DialCallStatus"];
    var response = new VoiceResponse();

    // 判断是否是未接听或语音信箱场景
    if (dialCallStatus == "no-answer" || dialCallStatus == "voicemail")
    {
        // 播放预录语音文件(替换成你上传到Twilio媒体库的语音URL)
        response.Play(new Uri("https://your-twilio-media-url.mp3"));
        
        // 如果你想用文字转语音,也可以用Say方法:
        // response.Say("您好,我们暂时无法接通您的电话,请留下您的信息,我们会尽快与您联系。", voice: VoiceEnum.PollyAmy);
    }

    // 处理完后挂断呼叫
    response.Hangup();
    return Request.CreateResponse(HttpStatusCode.OK, response.ToString(), "application/xml");
}

3. 关键细节说明

  • 回调URL的可访问性:确保你的action URL是公开可访问的(Twilio需要能调用到它),本地开发时可以用ngrok这类工具把本地端口暴露到公网。
  • 语音信箱检测:在Number方法中添加detectVoicemail: true,Twilio会自动检测语音信箱的问候音,此时回调的DialCallStatus会返回voicemail,比单纯依靠no-answer更精准。
  • 状态值说明:Twilio返回的常见DialCallStatus值包括:
    • completed:呼叫正常接通后挂断
    • no-answer:客户未接听,呼叫超时
    • voicemail:呼叫被转到语音信箱(需开启检测)
    • busy:客户电话占线

这样就能完美实现你要的需求:当客户未接或转语音信箱时,自动播放预录留言啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:42:17