Разработчик Twilio здесь.
Извините, я не разработчик Python, и у меня нет полностью сформированного ответа для вас здесь. Хотя я могу попытаться направить вас на правильный путь.
Во-первых, в вашем классе MyServer
вы используете декоратор @app.route
, но нет объекта app
, с которым можно иметь дело.
Насколько я могу судить по документации Flask, вы можете создать подкласс Flask, но это только для того, чтобы настроить его на уровне сервера.
Я полагаю, что когда вы хотите модульно настроить приложения Flask, вы действительно хотите изучить Blueprints . Это может быть вашим лучшим выбором, если вы хотите следовать принципам Flask.
Тем не менее, если вы продаете такие подклассы, лучший пример успешного использования таких классов, как этот, - это GitHub gist: https://gist.github.com/dplepage/2024129. Это не сопровождается комментариями, но, надеюсь, это относительно само за себя. Идея состоит в том, что вам нужно выполнить маршрутизацию, используя self.route
в конструкторе.
Так что для вашего приложения это может выглядеть примерно так (не проверено):
class MyServer(Flask):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.route('/voice', self.voice, methods=['GET', 'POST'])
self.route('/gather', self.gather, methods=['GET', 'POST'])
def voice(self):
self.resp = VoiceResponse()
self.resp.say("What is your name?")
print("1---------------")
self.resp.gather(input='speech', timeout="3", action='/gather', method='POST')
# resp.append(gather)
print("2---------------")
# print (str(resp))
# resp.say("Thank you for telling us your name")
return str(self.resp)
def gather(self):
self.resp = VoiceResponse()
print("3---------------")
self.speechRecogRes = request.values.get("SpeechResult", "")
print("4--------------->" + str(self.speechRecogRes))
self.resp.redirect('/voice')
return str(self.resp)
if __name__ == '__main__':
print('Hello!!')
app = MyServer(__name__)
app.run(debug=True)