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

能否为Twilio的dial.number添加自动语音检测(AMD)?

在Twilio通话中添加自动语音检测(AMD)

当然可以给你的Twilio通话添加自动语音检测(AMD),Twilio原生支持该功能,你只需修改现有TwiML配置,结合回调端点即可实现。

实现方式:修改<Dial>组件配置

直接在dial实例的参数中添加AMD相关配置,Twilio会自动完成检测,并将结果发送到你指定的回调端点。

修改后的代码示例

const VoiceResponse = require("twilio").twiml.VoiceResponse;

// 省略其他代码...

try {
    const response = new VoiceResponse();
    const dial = response.dial({
        callerId: twilioPhoneNumber,
        // 启用AMD检测
        amd: 'true',
        // 指定AMD结果回调的服务器端点
        amdStatusCallback: 'https://your-server-domain/amd-status',
        // 回调请求的HTTP方法
        amdStatusCallbackMethod: 'POST'
    });
    dial.number(toNumber);
    console.log('TwiML: ', response.toString());

    res.type('text/xml');
    res.send(response.toString());
} catch (error) {
    console.log('/make-call endpoint: ', error);
    res.status(400);
}

处理AMD回调结果

你需要在服务器上创建/amd-status端点,接收Twilio发送的检测结果,示例代码如下:

// 示例:Express框架下的AMD回调处理
app.post('/amd-status', (req, res) => {
    const amdResult = req.body.AnsweredBy;
    const callSid = req.body.CallSid;

    // 根据检测结果执行不同逻辑
    switch(amdResult) {
        case 'human':
            console.log(`通话 ${callSid} 被真人接听`);
            // 可在此添加真人接听后的逻辑,比如转接、播放语音等
            break;
        case 'machine_start':
            console.log(`通话 ${callSid} 检测到答录机`);
            // 可在此添加答录机处理逻辑,比如播放预录留言
            break;
        case 'not_answered':
            console.log(`通话 ${callSid} 无人应答`);
            break;
    }

    res.sendStatus(200);
});

关键参数说明

  • amd: 'true':开启Twilio的自动语音检测功能
  • amdStatusCallback:Twilio发送AMD结果的目标端点,必须能被公网访问
  • amdStatusCallbackMethod:回调请求使用的HTTP方法,支持POST或GET

注意事项

  • AMD检测结果存在一定延迟,取决于通话应答后的语音内容
  • 若需更精细的控制(比如自定义检测阈值),可使用Twilio的Answering Machine Detection API进行手动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:05:05