Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc IVR vs Asp.net MVC:我如何停止重新发明浏览器?_Asp.net Mvc_Ivr_Twilio - Fatal编程技术网

Asp.net mvc IVR vs Asp.net MVC:我如何停止重新发明浏览器?

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的回应

我正在为一个项目制作一个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的原型,可能对您的情况有所帮助。