2010-12-22 109 views
2

我期待開發一個包含呼叫中心人員可以使用的腳本的程序。我希望從一些基本領域/問題開始(姓名,電話,爲什麼打電話),然後根據以前問題的答案更新可用字段/問題。編寫腳本程序

例如:

開始與田/姓名,電話和爲什麼的問題,你叫(可能的答案是「日程安排約會」,「取消預約」,「辦公電話」)。一旦來電者回答「你爲什麼打電話問題」,將會顯示其他字段。這些額外的字段將取決於給出的答案。如果呼叫者要求預約,則可能會顯示日曆,如果呼叫取消,則將顯示任何現有約會等。

不幸的是,我不知道如何去做這件事。我認爲XML可能是要走的路,以便我可以將字段/問題數據存儲在樹狀結構中,但不確定它是否可行。

有沒有人做過類似的事情可以提供一些指導?我將使用C#和WPF來做這件事。

由於提前, 布賴恩

回答

1

你描述一個簡單的工作流程。根據複雜性,有許多方法可以實現。

最簡單的選擇可能是使用VisualStateManager根據「調用原因」的靜態列表顯示一組字段。從下拉菜單中選擇呼叫原因時,設置表單的可視狀態。

如果您需要能夠設計具有多個路徑和屏幕的數據驅動工作流程,則應考慮用戶在頁面中導航的嚮導式界面。顯示的下一頁取決於上一頁中的答案。

如果您需要一個複雜的工作流程,並且需要能夠進行可視化更新,請考慮Windows Workflow Foundation(WF。)。WF編輯器在WPF應用程序中可用,它允許超級用戶設計新的工作流程。

請參閱PRISM,也稱爲複合應用程序庫,以獲取有關如何動態組合應用程序的信息。棱鏡將允許您構建可以在運行時注入UserControl的視圖,具體取決於業務邏輯。

+0

+1針對不同級別複雜度的不同解決方案。聽起來像代表一個工作流程/流程圖將是OP解決方案的核心。 – 2010-12-22 17:54:35

0

我還沒有做過這件事你問的,但如果我在這裏做的是我會採取的做法。首先,你必須找出所有可能的邏輯路徑。所以你會有一系列的問題,併爲每個問題提供一組可能的答案。然後對這些回答中的每一個回答新的問題。因此,這將邏輯地創建一組可能的問題及其可能的答案。我會將這種關係編碼爲問題和迴應對象。此外,您需要用Response對象定義某種方式來指示接下來要做什麼(指向一組新的問題,或者它已完成)。所以,按照這樣的思路,你可以用一個圖表或更確切地說是一個樹形結構來結束。並且它可以被簡單地重複這樣使用堆棧:

// need to pull the Initial Set of Questions to start 
List<Question> currentQuestions = GetInitalQuestions(); 
// a stack to track the chosen responses, so we can unwind if needed 
Stack<Response> responseStack = new Stack<Response>(); 
// out exit condition is when currentQuestions is null 
while(currentQuestions != null) 
{ 
    // display the questions and get the user's response 
    Response resp = DisplayQuestions(currentQuestions); 
    // if we need to back up... 
    if (resp == Response.Back) 
    { 
     // make sure we have something to fall back to... 
     if (responseStack.Count > 0) 
      resp = responseStack.Pop(); 
     else 
      HandleAtBeginningOfStack(); 
    } 
    else 
    { 
     // add the chosen response to the stack 
     responseStack.Push(resp); 
    } 
    // get the next set of questions based on the response, unless we are at the end 
    if (resp.IsFinal) 
     currentQuestions = null; 
    else 
     currentQuestions = GetQuestionSetFromResponse(resp); 
} 

有了這個作爲基本邏輯,就需要構建一個UI呈現的問題及答覆。我會用一個面板創建一個表單。在表單上有一個名爲DrawPanel的方法或類似的東西,當通過一組問題及其響應時,它將清除面板並繪製必要的控件。所以,它會動態地創建顯示,因爲問題和答案是由用戶選擇的。由於我們有一堆所選的響應,您可以在窗體上的某個位置使用它,以向用戶顯示它們以前選擇的選項。