The documentation for the <Gather>
tag (Python)说:
如果您选择从呼叫者收集数字,Twilio的请求 您的应用程序将包含数字参数,其中包含哪个 您的来电者在。
期间输入的号码
但是,如果选择收集语音以便能够根据用户发送的语音分支呼叫逻辑,那么我无法找到参数。
我尝试了演讲和演讲,但没有成功。
我的代码:
from flask import Flask, request
from TwilioPhoneCall import app
from twilio.twiml.voice_response import VoiceResponse, Gather, Say
from twilio.twiml.messaging_response import MessagingResponse, Message
@app.route('/', methods=['GET', 'POST'])
def message():
resp = VoiceResponse()
gather = Gather(input='speech', timeout=3, hints='yes, no', action='/gather')
gather.say('Hi, do you wanna go out tonight?'+
' Answer yes or no.')
resp.append(gather)
resp.redirect('/')
return str(resp)
@app.route('/gather', methods=['GET', 'POST'])
def gather():
resp = VoiceResponse()
if 'Speech' in request.values:
choice = request.values['Speech']
if choice == 'yes':
resp.say('Yay! See you later!')
resp.sms('She replied yes!', to='myphonenumber')
return str(resp)
elif choice == 'no':
resp.say('Oh... Ok.')
resp.sms('She replied no.', to='myphonenumber')
return str(resp)
else:
resp.say('Sorry, but the options are yes or no.')
resp.redirect('/')
return str(resp)
我已经尝试使用dtmf(Digits)完全相同的代码并且工作正常,我的问题是语音:
在用户发言后,程序将循环回到第一个gather.say
,就好像没有输入一样。
答案 0 :(得分:2)
正确的参数名称为Speech
而不是 @app.route('/gather', methods=['GET', 'POST'])
def gather():
resp = VoiceResponse()
if 'SpeechResult' in request.values:
choice = request.values['SpeechResult']
if choice == 'Yes.':
resp.say('Yay! See you later!')
resp.sms('She replied yes!', to='myphonenumber')
return str(resp)
elif choice == 'No.':
resp.say('Oh... Ok.')
resp.sms('She replied no.', to='myphonenumber')
return str(resp)
else:
resp.say('Sorry, but the options are yes or no.')
resp.redirect('/')
return str(resp)
。
{{1}}
Twilio博客: 介绍语音识别 https://www.twilio.com/blog/2017/05/introducing-speech-recognition.html
答案 1 :(得分:2)
[SpeechResult]是您要查找的包含转录文本的返回值。
Twilio还会返回[置信度],得分在0到1之间(根据我的经验计算为8位小数),可能表示转录的准确性。