2010-03-08 27 views
4

我正在爲一個項目製作一個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

回答

2

雖然我幾乎不知道你在說什麼,但因爲沒有人會說什麼,所以我會對它開槍(如果我完全不在方向,不要開槍)。

在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

0

Ricky從Twilio在這裏。

出於某種原因,像Zork那樣組織的代碼聽起來對我來說很有趣,但在實踐中我可以理解這可能會讓某個人瘋狂!

我們剛剛推出了一堆非平凡的生產準備教程,以幫助開發人員在如何組織特定類型的應用程序時遇到問題。一個教程是IVR built using C# with ASP.NET MVC

縱觀我們如何決定要構建的東西,我們使用3個控制器來控制我們的邏輯:

  • IVRController.cs:該控制器包含了歡迎,當他們調用用戶的代碼進入我們的IVR。
  • MenuController.cs:這個控制器是我們根據他們的輸入確定用戶的適當的IVR菜單的地方。
  • PhoneExchangeController.cs:在此控制器中,我們有邏輯將來自IVR的呼叫轉接到另一個電話號碼。

當你想通過添加類似「按9返回」這樣的定製體驗,對MenuController.cs進行更改應該有助於你到達那裏。

相關問題