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

使用Twilio API开发拨号器:机器应答时如何发送语音消息?

处理Twilio拨号器中机器应答时发送语音消息的方案

Twilio提供**Answering Machine Detection(AMD)**功能,可识别呼叫应答方是真人还是机器,基于此你可以实现机器应答时自动发送语音消息的逻辑,具体步骤如下:

1. 发起呼叫时启用机器检测

调用Twilio Calls API发起呼叫时,添加MachineDetection参数启用机器检测,推荐使用DetectMessageEnd值,该模式会等待机器的自动语音提示结束后再触发后续逻辑,避免语音消息被打断。

示例Python代码:

from twilio.rest import Client

account_sid = '你的Twilio账户SID'
auth_token = '你的Twilio认证Token'
client = Client(account_sid, auth_token)

call = client.calls.create(
    url='https://你的公网可访问地址/handle-call',  # 处理呼叫的回调端点
    to='目标电话号码',
    from_='你的Twilio号码',
    machine_detection='DetectMessageEnd'
)

2. 在回调端点处理机器应答事件

当Twilio检测到呼叫被机器应答时,会向指定的回调URL发送POST请求,其中AnsweredBy参数值为machine。你需要在回调端点返回对应的TwiML指令,播放预设的语音消息。

直接返回TwiML示例

<Response>
    <!-- 播放文本转语音消息 -->
    <Say voice="alice">你好,这里是XX公司的语音通知,请留意本次消息内容。</Say>
    <!-- 或者播放预录制的音频文件 -->
    <!-- <Play>https://你的服务器地址/notification-audio.mp3</Play> -->
</Response>

Flask后端处理示例

from flask import Flask, request, make_response
from twilio.twiml.voice_response import VoiceResponse, Say

app = Flask(__name__)

@app.route('/handle-call', methods=['POST'])
def handle_call():
    answered_by = request.values.get('AnsweredBy', '')
    resp = VoiceResponse()

    if answered_by == 'machine':
        # 机器应答时播放语音消息
        resp.say('你好,本次语音通知内容为:您的订单已发货,请留意查收。', voice='alice')
    else:
        # 真人应答时的处理逻辑(可根据需求调整)
        resp.say('你好,请问有什么可以帮到您?', voice='alice')

    return make_response(str(resp))

if __name__ == '__main__':
    app.run(debug=True)

3. 关键注意事项

  • 回调URL必须能被Twilio公网访问,开发阶段可使用ngrok等工具暴露本地服务。
  • 可通过MachineDetectionTimeout参数调整机器检测的超时时间(默认30秒)。
  • 若选择Play指令播放音频,确保音频文件格式为Twilio支持的MP3或WAV格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:52:24