Я создаю систему IVR для проекта и решил Twilio для обработки части телефона (совершение и прием вызовов, отправка и получение SMS-сообщений). Это приведет к появлению веб-сайта с интерфейсом IVR, что позволит пользователям перемещаться по сайту с помощью телефона с тональным набором.
Я не делаю весь контент доступным для просмотра по телефону, только то, что имеет смысл.
Twilio отправляет параметры на ваш URL в строке запроса или через POST, и вы отвечаете специальным подмножеством XML, которое сообщает IVR, как действовать. Я очень быстро продвинулся вперед с ASP.net MVC, рассматривая контент Twilio XML как представление и отображая на нем данные сайта.
Вот как выглядит ответ на Twilio:
<?xml version="1.0" encoding="UTF-8" ?>
<Response>
<Say>Hello World</Say>
<Play>http://api.twilio.com/Cowbell.mp3</Play>
</Response>
Вот как выглядит меню Twilio:
<?xml version="1.0" encoding="UTF-8" ?>
<Gather action="http://your_url" numdigits="1">
<Say>Press 1 to execute your_url, passing a parameter named "digits"</Say>
</Response>
Вот где я застрял:
Я пытаюсь добавить универсальную кнопку «назад», может быть, кнопку «пропустить», кнопку «повторить» и т. Д., И я обнаруживаю, что при каждом просмотре я обнаруживаю нажатую цифру, а затем если в жестком Response.Redirect()
. Я знаю, что это быстро станет неприемлемым для большого количества видов и меню.
Итак, как мне смоделировать приложение MVC, чтобы оно больше походило на приложение, а не на игру Zork? Стеки объектов Menu, каждый со списками объектов MenuItem? Как сделать, скажем, «9» универсальной опцией «назад» и заставить приложение уважать его, независимо от того, где в системе меню находится пользователь, без необходимости кодировать его в каждом представлении?
Функция "назад" - это всего лишь признак хаоса, в который войдет этот проект, если я сейчас не потрачу время на его разработку должным образом. Существуют ли рамки .net IVR, которые я могу проверить на предмет идей? Буду признателен за любую помощь, я знаю, что это не новая проблема, я просто не могу понять, как выбрать лучший путь.