Разработчик Twilio здесь.
Прежде всего, я бы спросил, почему вы пытаетесь перенаправить, прежде чем использовать результат. У вас уже есть речевой результат в вашей /gather
конечной точке, почему бы тогда не ответить? Как это:
@app.route("/gather", methods=['GET', 'POST'])
def gather():
resp = VoiceResponse()
lastRes = request.values.get("SpeechResult", "")
resp.say('Thank you ' + lastRes + '.')
resp.redirect('/mainFlow')
return str(resp)
В этом ответе будет сказано «Спасибо» и результат речи, после чего вы будете перенаправлены в основной поток.
Кроме того, вы работаете с URL здесь. Вы можете установить ответ в качестве параметра URL, например:
import urllib
@app.route("/gather", methods=['GET', 'POST'])
def gather():
resp = VoiceResponse()
SpeechResult = request.values.get("SpeechResult", "")
params = urllib.urlencode({"SpeechResult": SpeechResult})
resp.redirect('/mainFlow?' + params)
return str(resp)
Тогда вы можете использовать SpeechResult
в mainFlow
, например:
@app.route("/mainFlow", methods=['GET', 'POST'])
def mainFlow():
SpeechResult = request.args.get('SpeechResult')
resp = VoiceResponse()
resp.say("We are done? " + SpeechResult)
return str(resp)
Наконец, вы можете установить SpeechResult в сеансе, поскольку он поддерживается и во время вызова.
from flask import Flask, session, request
@app.route("/gather", methods=['GET', 'POST'])
def gather():
resp = VoiceResponse()
session['SpeechResult'] = request.values.get("SpeechResult", "")
resp.redirect('/mainFlow')
return str(resp)
@app.route("/mainFlow", methods=['GET', 'POST'])
def mainFlow():
SpeechResult = session['SpeechResult']
resp = VoiceResponse()
resp.say("We are done? " + SpeechResult)
return str(resp)
Дайте мне знать, поможет ли это вообще.