如何获取Twilio电话呼叫中<Gather>标签收集到的用户输入信息
解答
你当前的TwiML里的<Gather>标签缺少必要的回调配置,按以下步骤调整即可获取用户输入的按键信息:
第一步:修改TwiML的<Gather>配置
你需要给<Gather>标签添加必要属性,调整后的完整示例如下:
<?xml version="1.0" encoding="UTF-8"?> <!-- page located at http://example.com/simple_gather.xml --> <Response> <Pause length="2"/> <Play>https://welcomehisheart.com/wp-content/uploads/2021/10/congress-invitation.mp3</Play> <Pause length="1"/> <Gather action="你的后端服务接口地址" method="POST" numDigits="1" timeout="5"> <Say>If you would no longer like to receive information about the Sacred Heart, press 2</Say> </Gather> <!-- 超时未输入的话会走Gather后面的逻辑,你可以在这里加对应的处理TwiML --> <Pause length="1"/> </Response>
属性说明:
action:填你自己部署的后端接口地址,Twilio会把用户输入的信息发送到这个地址method:指定请求发送方式,可选POST/GET,默认是POSTnumDigits:指定收集的按键位数,你只需要用户按1个数字,设为1即可,用户输完后会立刻提交不需要额外按确认键timeout:用户无操作的超时时间,单位秒,默认5秒
注意要把原来在<Gather>外面的<Say>标签移到<Gather>内部,这样提示音播放完成后才会自动进入按键收集状态。
第二步:在你的后端接口中获取收集到的信息
Twilio向你配置的action地址发送请求时,会携带以下常用参数:
Digits:用户输入的按键内容,就是你需要的收集结果CallSid:当前通话的唯一标识,可用来关联通话记录From:来电号码To:被叫号码
你可以直接从请求参数中读取这些值,示例(Python Flask 场景):
from flask import Flask, request app = Flask(__name__) @app.route('/gather-handler', methods=['POST']) def gather_handler(): # 拿到用户输入的按键 user_input = request.form.get('Digits') # 你可以在这里把user_input存到数据库,或者做业务逻辑判断 if user_input == '2': # 返回退订对应的TwiML return ''' <Response> <Say>Your unsubscribe request has been received, we will no longer send you relevant information.</Say> <Hangup/> </Response> ''' else: # 返回其他流程的TwiML return ''' <Response> <Say>Thank you for your listening.</Say> <Hangup/> </Response> '''
如果暂时没有自己的后端服务,也可以在Twilio控制台的通话日志中查看每一通通话的请求参数,里面也会记录用户提交的Digits值。
内容的提问来源于stack exchange,提问作者ctk
相关产品推荐
相关产品推荐

