IVR против Asp.net MVC: как я могу перестать изобретать браузер? - PullRequest
4 голосов
/ 08 марта 2010

Я создаю систему 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, которые я могу проверить на предмет идей? Буду признателен за любую помощь, я знаю, что это не новая проблема, я просто не могу понять, как выбрать лучший путь.

Ответы [ 2 ]

2 голосов
/ 09 марта 2010

Хотя я почти не имею понятия о том, что вы говорите, поскольку никто не сказал мне ничего, я сделаю это (не стреляйте в меня, если я совершенно не в направлении).

В MVC 2 вы можете отображать действия в ваших представлениях:

<%= Html.Action("home", "menu" , new { someparam = somevalue, someotherparam = someothervalue }) %>

Это вызвало бы действие Menu в вашем Home контроллере с заданными параметрами. Result этого Action будет вставлено в ваше представление.
Таким образом, вы можете сохранить ваши взгляды в чистоте, и все ваши меню в одном месте. Просто добавьте вышеуказанную строку в каждом представлении.

Снова то же самое можно сделать с HtmlHelper, но иногда вышеуказанный способ просто проще.

0 голосов
/ 11 апреля 2016

Рикки из Twilio здесь.

По какой-то причине наличие кода, организованного как Zork, звучит для меня забавно, но на практике я понимаю, как это может свести с ума кого-то!

Мы только что запустили несколько нетривиальных, готовых к работе учебных пособий, которые помогут, когда у разработчиков возникнут вопросы о том, как организовать конкретный тип приложения. Одним из руководств является IVR, построенный с использованием C # с ASP.NET MVC .

Взглянув на то, как мы решаем структурировать вещи, мы используем 3 контроллера для управления нашей логикой:

  • IVRController.cs : этот контроллер содержит код, который приветствует пользователя, когда он звонит в наш IVR.
  • MenuController.cs : В этом контроллере мы определяем соответствующее меню IVR для пользователя в зависимости от его входных данных.
  • PhoneExchangeController.cs : В этом контроллере у нас есть логика для переадресации вызова с нашего IVR на другой номер телефона.

Поскольку вы хотите настроить опыт, добавив что-то вроде «Нажмите 9, чтобы вернуться», внесение изменений в MenuController.cs должно помочь вам туда добраться.

...