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

如何在Twilio外呼通话中获取用户的DTMF按键输入

在Twilio外呼通话中获取用户按键输入的实现方案

核心逻辑

Twilio通过TwiML的<Gather>指令实现按键收集:外呼接通后,你的服务返回包含<Gather>的TwiML引导用户按键;用户输入后,Twilio会将按键数据通过POST请求发送到你指定的webhook接口,读取接口参数即可获取输入内容。

具体实现步骤

  • 1. 配置外呼初始响应接口
    当Twilio发起外呼并接通用户后,会请求你预先设置的初始webhook地址,该接口需返回包含<Gather>的TwiML,告知用户按键规则。

  • 2. 编写按键处理接口
    在<Gather>的action属性中指定接收按键数据的接口地址,Twilio会将用户输入的按键以Digits参数传递到该接口,读取此参数即可完成获取。

  • 3. 处理异常场景
    通过<Gather>的timeout(等待按键超时时间)和numDigits(需收集的按键数量)属性控制交互逻辑,同时添加无输入/超时后的 fallback 处理。

代码示例(Python Flask)

初始响应接口(引导用户按键)

from flask import Flask, Response, request
app = Flask(__name__)

@app.route("/outbound/start", methods=['POST'])
def outbound_start():
    twiml = """
    <Response>
        <Gather action="/outbound/process-key" method="POST" numDigits="1" timeout="5">
            <Say>您好,请按1查询订单状态,按2联系客服。</Say>
        </Gather>
        <Say>未收到您的输入,通话即将结束。</Say>
        <Hangup/>
    </Response>
    """
    return Response(twiml, mimetype='application/xml')

按键处理接口(获取并处理用户输入)

@app.route("/outbound/process-key", methods=['POST'])
def process_key():
    user_input = request.form.get('Digits')
    
    if user_input == '1':
        twiml = """
        <Response>
            <Say>您的订单正在配送中,预计今日送达。</Say>
            <Hangup/>
        </Response>
        """
    elif user_input == '2':
        twiml = """
        <Response>
            <Say>正在为您转接客服,请稍候。</Say>
            <Dial>+1234567890</Dial>
        </Response>
        """
    else:
        twiml = """
        <Response>
            <Say>无效的按键,请重新输入。</Say>
            <Redirect method="POST">/outbound/start</Redirect>
        </Response>
        """
    return Response(twiml, mimetype='application/xml')

注意事项

  • 确保你的webhook地址是公网可访问的(本地调试可使用端口映射工具)
  • <Gather>的method属性需与接口的请求方法(POST/GET)保持一致
  • 若需收集固定长度的按键(如验证码),设置numDigits为对应数值,用户输入足够位数后会自动提交
  • 可通过<Say>或<Play>指令播放语音提示,引导用户完成按键操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:27:22