IVR против Asp.net MVC:Как мне перестать изобретать браузер заново?

StackOverflow https://stackoverflow.com/questions/2402347

  •  18-09-2019
  •  | 
  •  

Вопрос

Я делаю систему IVR для проекта и решил Твилио для управления телефонной частью (совершение и прием звонков, отправка и получение SMS-сообщений).Появится веб-сайт с интерфейсом IVR, позволяющим пользователям перемещаться по сайту с помощью телефона с тональным набором.

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

Twilio отправляет параметры на ваш URL-адрес в строке запроса или через POST, а вы отвечаете специальным подмножеством XML, который сообщает IVR, как действовать.Я очень быстро добился большого прогресса с ASP.net MVC, рассматривая XML-контент Twilio как представление и отображая в него данные сайта.

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

Здесь Рикки из Твилио.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top