我正在为一个项目创建IVR系统,并已决定Twilio处理电话部分(拨打和接听电话,发送和接收SMS消息)。这将使带有IVR前端的网站浮出水面,允许用户使用其按键电话浏览该网站。

我并不是说所有内容都可以通过电话浏览,这才是有意义的。

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>


这是我被困的地方:

我正在尝试添加通用的“后退”按钮,也许是“跳过”按钮,“重复”按钮等,并且我发现在每个视图上都在检测到按下的数字,然后如果-ing到硬编码的Response.Redirect()。我知道对于大量的视图和菜单,这将很快变得难以维护。

因此,如何为MVC应用程序建模,使其更像一个应用程序,而不像Zork游戏?堆栈的Menu对象,每个对象都有MenuItem对象的列表?我如何才能使“ 9”成为“后退”的通用选项并使应用程序尊重它,无论用户在菜单系统中处于何处,而不必在每个视图中为其编码?

如果我现在不花一点时间来适当地设计它,则后置功能只是该项目将陷入混乱的征兆。我可以检查想法的.net IVR框架吗?任何帮助将不胜感激,我知道这不是一个新问题,我似乎无法尽全力以赴。

最佳答案

尽管我几乎对您在说什么一无所知,但由于没人会说任何话,所以我会对它开枪(如果我完全不向方向开枪,请勿对我开枪)。

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

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


这将使用给定的参数在您的Menu控制器中调用Home动作。然后,该ResultAction将插入您的视图中。
这样,您就可以保持视图整洁,并将所有Menu内容都放在一个位置。只需在每个视图中添加上述行即可。

同样,可以使用HtmlHelper进行相同的操作,但有时上述方法更容易。

10-06 01:08