Asp.net mvc IVR vs Asp.net MVC:我如何停止重新发明浏览器?
我正在为一个项目制作一个IVR系统,并决定处理电话部分(拨打和接听电话,发送和接收短信)。这将使一个带有IVR前端的网站浮出水面,允许用户使用他们的按键电话浏览该网站 我并不是让所有的内容都可以通过电话浏览,只是让它们有意义而已 Twilio通过querystring或POST将参数发送到您的URL,您将使用一个特殊的XML子集进行响应,该子集告诉IVR如何操作。我用ASP.NETMVC很快取得了很大的进展,将TwilioXML内容作为一个视图,并将站点的数据呈现给它 下面是对Twilio的回应:Asp.net mvc IVR vs Asp.net MVC:我如何停止重新发明浏览器?,asp.net-mvc,ivr,twilio,Asp.net Mvc,Ivr,Twilio,我正在为一个项目制作一个IVR系统,并决定处理电话部分(拨打和接听电话,发送和接收短信)。这将使一个带有IVR前端的网站浮出水面,允许用户使用他们的按键电话浏览该网站 我并不是让所有的内容都可以通过电话浏览,只是让它们有意义而已 Twilio通过querystring或POST将参数发送到您的URL,您将使用一个特殊的XML子集进行响应,该子集告诉IVR如何操作。我用ASP.NETMVC很快取得了很大的进展,将TwilioXML内容作为一个视图,并将站点的数据呈现给它 下面是对Twilio的回应
<?xml version="1.0" encoding="UTF-8" ?>
<Response>
<Say>Hello World</Say>
<Play>http://api.twilio.com/Cowbell.mp3</Play>
</Response>
你好,世界
http://api.twilio.com/Cowbell.mp3
在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>
按1执行_url,传递名为“digits”的参数
这就是我被困的地方:
我试图添加一个通用的“后退”按钮,可能是一个“跳过”按钮,一个“重复”按钮,等等,我发现在每个视图上,我都检测到被按下的数字,然后返回到一个硬编码的响应。重定向()
。我知道这将很快变得无法维护大量视图和菜单
那么,我如何对MVC应用程序进行建模,使其更像一个应用程序,而不像Zork游戏?菜单对象堆栈,每个都有菜单项对象列表?我怎样才能使“9”成为“back”的通用选项,并让应用程序尊重它,无论用户在菜单系统中的哪个位置,而不必在每个视图中为其编码
如果我现在不花一点时间来正确设计它,那么back功能只是这个项目将陷入混乱的一个症状。有没有.NETIVR框架可以让我检查一下,看看是否有创意?我知道这不是一个新奇的问题,我似乎无法找到最好的解决办法。尽管我几乎不知道你在说什么,因为现在还没有人说什么,我会尝试一下(如果我完全不在方向上,请不要开枪打我) 在MVC 2中,您可以在视图中渲染操作:
<%= Html.Action("home", "menu" , new { someparam = somevalue, someotherparam = someothervalue }) %>
这将使用给定参数调用主控制器中的菜单
操作。然后将此操作的结果
插入到您的视图中。
这样,你可以保持你的观点干净,并在一个地方你的所有菜单的东西。只需在每个视图中添加上述行
同样,同样的方法也可以用HtmlHelper
实现,但有时上述方法更简单。来自Twilio的Ricky
出于某种原因,拥有像Zork那样组织的代码对我来说听起来很有趣,但实际上我可以理解这可能会让人发疯
我们刚刚发布了一系列非平凡的、面向生产的教程,当开发人员对如何组织特定类型的应用程序有疑问时,可以提供帮助。一个教程就是一个例子
看看我们是如何决定结构的,我们使用3个控制器来控制我们的逻辑:
- IVRController.cs:此控制器包含欢迎用户呼叫IVR的代码
- MenuController.cs:此控制器用于根据用户的输入确定适当的IVR菜单
- PhoneExchangeController.cs:在这个控制器中,我们有逻辑将呼叫从IVR转发到另一个电话号码
当您希望通过添加“按9键返回”之类的内容来定制体验时,对MenuController.cs
进行更改应该可以帮助您达到目的。您已经设法读懂了我的心思!这正是我想要了解的,如何在给定特定输入的情况下存储要执行的一系列操作。令人惊叹的!克里斯,你能联系我吗johnsheehan@gmail讨论这个?我现在为Twilio工作,我有一个基于MVC的原型,可能对您的情况有所帮助。