如何在TwiML中实现重复播放用户输入的DTMF按键数值功能
问题原因
你当前的代码有两处不符合需求的设置:
- 你配置了
numDigits="5",仅当用户输入刚好5位数字时才会触发输入完成回调,如果要收集长度不固定的电话号码,建议删除该参数,保留finishOnKey="#"让用户输入完成后按#主动确认即可。 <Gather>标签同级后的内容,仅在用户超时未输入任何内容时才会执行。正常完成输入后Twilio会直接请求你action参数指定的地址,不会执行你写的<Say>You entered: {Digits}</Say>逻辑,号码回放的代码需要放在action对应的返回内容里。
调整方案
- 首先修改收集用户输入的TwiML代码:
<Response> <Gather input="dtmf" finishOnKey="#" timeout="10" action="https://handler.twilio.com/twiml/EHb45a578e1b6a7a33187bb7e72f721dd1" method="GET"> <Say>请输入您的电话号码,输完按#号键确认</Say> </Gather> <Say>我们未收到您的输入,请稍后再试</Say> </Response>
如果你需要同时支持语音输入号码,把input参数值改回speech dtmf即可。
- 修改
action地址对应的TwiML返回内容:
Twilio请求该地址时会自动将用户输入的DTMF数字以Digits参数传递,你直接在返回的TwiML中引用该参数即可实现号码回放,如果你用的是Twilio官方的TwiML Bin服务,参数用双大括号包裹即可,示例如下:
<Response> <Say>您输入的号码是:{{Digits}}</Say> </Response>
如果是你自己搭建的接口服务,直接从请求参数中取出Digits的值拼到<Say>标签的内容里返回即可。
内容的提问来源于stack exchange,提问作者eldays4632
相关产品推荐
相关产品推荐

