代码之家  ›  专栏  ›  技术社区  ›  Chris McCall

ivr与asp.net mvc:我如何才能停止对浏览器的革新?

  •  4
  • Chris McCall  · 技术社区  · 14 年前

    我正在为一个项目做一个ivr系统,并决定 Twilio 处理电话部分(拨打和接听电话、发送和接收短信)。这将使一个带有ivr前端的网站浮出水面,允许用户使用他们的按键电话浏览网站。

    我并没有让所有的内容都可以在电话上浏览,只是有意义而已。

    twilio在querystring或post上向url发送参数,然后用一个特殊的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游戏?一堆菜单对象,每个都有菜单项对象列表?我怎样才能使“9”成为“back”的通用选项,并让应用程序尊重它,不管用户在菜单系统的哪个位置,而不必在每个视图中为它编码?

    如果我现在不花一点时间来正确设计它的话,back特性只是这个项目将陷入混乱的一个症状。有没有.net ivr框架,我可以检查的想法?任何帮助都是值得感谢的,我知道这不是一个新奇的问题,我只是似乎无法让我的头周围的最佳路径采取。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Gideon    14 年前

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

    在MVC 2中,可以在视图中呈现操作:

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

    这就叫 Menu 你的行动 Home 具有给定参数的控制器。这个 Result 其中 Action 将被插入到视图中。
    这样你就可以保持你的视图干净,所有的菜单都放在一个地方。只需在每个视图中添加上述行即可。

    同样的道理 HtmlHelper 是的,但有时上述方法更简单。

        2
  •  0
  •   rickyrobinett    8 年前

    瑞奇从这里来。

    出于某种原因,对我来说,拥有像zork那样有组织的代码听起来很有趣,但实际上我可以理解这可能会让人发疯!

    我们刚刚发布了一系列非琐碎的、面向生产的教程,当开发人员对如何组织特定类型的应用程序有疑问时,我们会提供帮助。一个教程是 IVR built using C# with ASP.NET MVC .

    看看我们是如何决定结构的,我们使用3个控制器来控制我们的逻辑:

    • IVRController.cs公司 :此控制器包含欢迎用户调用我们的ivr的代码。
    • menucontroller.cs公司 :这个控制器是我们根据用户的输入为用户确定合适的ivr菜单的地方。
    • 电话交换控制器.cs :在这个控制器中,我们有逻辑将一个呼叫从ivr转发到另一个电话号码。

    当您希望通过添加“按9返回”之类的内容来定制体验时,请更改 MenuController.cs 应该能帮你到那里。