IVR vs Asp.net MVC:我该如何停止重新创建浏览器?

IVR vs Asp.net MVC:我该如何停止重新创建浏览器?

问题描述:

我正在为一个项目制作一个IVR系统,并已决定处理电话部分(拨打和接听电话,发送和接收SMS消息)Twilio。这将在网站上显示一个IVR前端,允许用户使用他们的按键式电话浏览网站。IVR vs Asp.net MVC:我该如何停止重新创建浏览器?

我没有通过电话浏览所有的内容,只是有道理。

Twilio通过查询字符串或POST发送参数到您的URL,并用一个特殊的XML子集响应,告诉IVR如何操作。我使用ASP.net MVC非常快速地取得了很大进展,将Twilio XML内容视为View并将网站数据呈现给它。

下面是到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框架,我可以检查想法吗?任何帮助,将不胜感激,我知道这不是一个新奇的问题,我似乎无法让自己的头最好的路径采取。

+1

克里斯,你可以联系我johnsheehan @ gmail来讨论这个吗?我现在正在为Twilio工作,并且我有一个基于MVC的原型,可能有助于您的情况。 – 2010-03-21 00:39:47

虽然我几乎不知道你在说什么,但因为没有人会说什么,所以我会对它开枪(如果我完全不在方向,不要开枪)。

在MVC 2,你可以在你的意见渲染操作:

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

这将与给定的参数调用Menu行动在Home控制器。然后将ActionResult插入到您的视图中。
这样你可以保持你的视图干净,并在一个地方所有的菜单的东西。只需在每个视图中添加上述行。

同样可以用HtmlHelper来完成,但有时上述方式更容易。

+0

你不知何故设法阅读我的想法!这正是我想要得到的,如何在给定特定输入的情况下存储一系列要执行的操作。真棒! – 2010-03-09 15:32:00

+0

我很高兴我可以提供帮助。 – Gidon 2010-03-09 16:16:54

Ricky从Twilio在这里。

出于某种原因,像Zork那样组织的代码听起来对我来说很有趣,但在实践中我可以理解这可能会让某个人疯狂!

我们刚刚推出了一堆非平凡的生产准备教程,以帮助开发人员在如何组织特定类型的应用程序时遇到问题。一个教程是IVR built using C# with ASP.NET MVC

纵观我们如何决定要构建的东西,我们使用3个控制器来控制我们的逻辑:

  • IVRController.cs:该控制器包含了欢迎,当他们调用用户的代码进入我们的IVR。
  • MenuController.cs:这个控制器是我们根据他们的输入确定用户的适当的IVR菜单的地方。
  • PhoneExchangeController.cs:在此控制器中,我们有逻辑将来自IVR的呼叫转接到另一个电话号码。

当你想通过添加类似“按9返回”这样的定制体验,对MenuController.cs进行更改应该有助于你到达那里。