2010-03-08 2 views
4

Я делаю систему IVR для проекта, и решил по телефону Twilio обрабатывать часть телефона (принимать и принимать звонки, отправлять и получать SMS-сообщения). Это откроет веб-сайт с интерфейсом IVR, позволяя пользователям перемещаться по сайту с помощью телефона с тональным набором.IVR vs Asp.net MVC: Как я могу перестать изобретать браузер?

Я не делаю все содержимое доступным по телефону, что имеет смысл.

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? Стеки объектов меню, каждый со списками объектов MenuItem? Как я могу сделать, скажем, «9» универсальный вариант для «назад» и поддерживать приложение, независимо от того, где в системе меню пользователь, без необходимости кодировать его в каждом представлении?

Задняя особенность - это всего лишь признак хаоса, в который этот проект вступит, если я не буду сейчас нарисовать его правильно. Есть ли там .net IVR frameworks, я могу проверить идеи? Любая помощь была бы оценена, я знаю, что это не новая проблема, я просто не могу показаться, что у меня есть лучший путь.

+1

Крис, можете ли вы связаться со мной johnsheehan @ gmail, чтобы обсудить это? Теперь я работаю над Twilio, и у меня есть прототип MVC, который может помочь в вашей ситуации. –

ответ

2

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

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

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

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

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

+0

Вам как-то удалось прочесть мой разум! Это именно то, к чему я пытался добраться, как хранить ряд действий, которые должны выполняться с учетом конкретного ввода. Потрясающие! –

+0

Я счастлив, что смогу помочь. – Gidon

0

Ricky от Twilio здесь.

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

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

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

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

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

Смежные вопросы