Twilio Voice Gather + Django Regex Validation
Как использовать регулярные выражения для проверки пользовательского ввода, собранного через dtmf? Например: Я хочу применить проверку к нескольким представлениям в одном и том же файле views.py. Если пользовательский ввод прошел проверку, то перенаправить его на следующий вид. Если пользовательский ввод не прошел проверку, то используйте глагол Say, чтобы выдать сообщение об ошибке и перенаправить на текущий вид, чтобы пользователь мог попробовать еще раз.
Пример:
Пожалуйста, нажмите 123
Пользователь нажимает 384
Ввод проверяется по regex и не проходит валидацию
Скажите: Извините, но это неправильно.
перенаправить на текущее представление, чтобы пользователь мог повторить попытку
Пожалуйста, нажмите 123.
Пример:
Пожалуйста, нажмите 123
Пользователь нажимает 123
Ввод проверяется по regex и проходит валидацию
Пользователь перенаправляется к следующему представлению
Я использую:
Python 3.9.5
Django 3.2.8
twilio 7.1.0
Просто для ясности. Я спрашиваю не о том, какой regex использовать, а о том, как реализовать использование любого regex для целей валидации. Как мне заставить django выполнить проверку?
Спасибо!
Здесь евангелист-разработчик Twilio.
Ваш код примера не совсем правильный, вы не используете <Redirect>
после <Gather>
, чтобы перевести разговор дальше, вы должны добавить атрибут action
со следующим URL.
def question_1():
response = VoiceResponse()
gather = Gather(input='dtmf', action='/question_2')
gather.say('Blah blah blah.')
response.append(gather)
print(response)
Это будет означать, что когда пользователь вводит свои цифры, они отправляются как часть запроса к /question_2
, как параметр Digits
.
Итак, в /question_2
необходимо проверить, был ли ответ правильным. Если да, то вы можете вернуть следующий TwiML, в противном случае вы можете вернуться к /question_1
.
def question_2():
digits = request.POST.Digits
response = VoiceResponse()
if test_question_1(digits):
gather = Gather(input='dtmf', action='/question_3')
gather.say('Ask question 2.')
response.append(gather)
else:
response.redirect("/question_1")
print(response)
В приведенном выше коде не рассматривается проверка на соответствие цифрам, но это то место, где вы могли бы выполнить такую проверку.