2012-10-15 89 views
0

我一直在學習星號dialplan,我創建了一個非常簡單的IVR菜單。我希望有人來驗證我創建的是正確的。我想創建一個非常簡單的IVR,具有2個菜單級別,退出選項。asterisk撥號計劃上下文澄清

[incoming] 
exten => 123,1,Answer() 
exten => 123,n,Background(main-menu) 

exten => 1,1,Playback(digits/1) 
exten => 1,n,Goto(incoming,123,1) 

exten => 2,1,Playback(digits/2) 
exten => 2,n,Goto(incoming,123,1) 

exten => 9,1,Hangup() 

[main-menu] 
exten => 456,1,Answer() 
exten => 456,n,Background(main-menu) 

exten => 3,1,Playback(digits/3) 
exten => 3,n,Goto(incoming,456,1) 

exten => 4,1,Playback(digits/4) 
exten => 4,n,Goto(incoming,456,1) 

exten => 9,1,Hangup() 

我已經創建了上述

2點上下文的[進入] - 處理來電 [主菜單] - 一個菜單選項。

在傳入的context.I擴展名爲'123'時調用Answer()應用程序然後它執行背景(主菜單)。

if the user presses '1' it plays '1' and goes back to 123 priority '1' 

if the user presses '2' it plays '2' and goes back to 123 priority '1' 

if the user presses '9' it hangs up. 

同樣在[主目錄]

,我需要一個答案()在這方面也?

我剛剛開始瞭解撥號方案,目前我有點困惑。

所以根據你的建議,我更新的撥號方案看起來像這樣。

[incoming] 
exten => 123,1,Answer() 
same => n(menuprompt),Background(main-menu) 

exten => 1,1,Playback(digits/1) 
same => n,Goto(menuprompt) 

exten => 2,1,Playback(digits/2) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

[main-menu] 
exten => n(menuprompt),Background(main-menu) 

exten => 3,1,Playback(digits/3) 
same => n,Goto(menuprompt) 

exten => 4,1,Playback(digits/4) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

感謝您的建議和解釋。但我有一個問題。

1)「主菜單」傳遞給後臺是聲音文件apparently.In的情況下,[進入]我想,要這樣說

"press 1 to play 1" 
"press 2 to play 2" 
"press 9 to hangup" 

,其中在[主的情況下, -menu]我想讓它說些類似於

"press 3 to play 3" 
    "press 4 to play 4" 
    "press 9 to hangup" 

是否需要記錄該文件?這是如何運作的?

在此先感謝。

回答

1

你接近,但並不完全。

思考語境物理盒。你不能穿過箱子裏的牆壁。因此,「標籤」和擴展名僅適用於該特定框/內容中的內容。

在你的撥號方案更新,你就需要專門轉到上下文/擴展/優先得到一個上下文到另一個。撥號方案知道你是不是想成是指它是在已經運行。

至於消息的上下文中這樣提示你在玩,是的,你需要記錄那些。從用戶的角度來看,MP3格式是最容易使用的,但是它給PBX帶來了更多的負擔。在這個多核千兆CPU的時代,我很少擔心這一點。

如果這將是一個公開面向系統,考慮你的菜單錄音是你的系統中最重要的組成部分,從客戶POV。質量差,低容量,難以口音和這樣的消息將「說服」你的客戶,你的IVR是「工作量太大」來使用。

1

您的[傳入]上下文完全符合您的想法。
在開始向客戶發送聲音之前,您只需要回答()該行一次。所以如果你以前沒有做過,你只需要在[main-menu]中的Answer()。

這裏是[incoming]的輕微重寫,在可讀性和防僞方面會稍微「更好」一些。

[incoming] 
exten => 123,1,Answer() 
same => n(menuprompt),Background(main-menu) 

exten => 1,1,Playback(digits/1) 
same => n,Goto(menuprompt) 

exten => 2,1,Playback(digits/2) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

「相同」的確如它聽起來的樣子; 「使用與上面一行相同的擴展名」。如果您正在做大型撥號方案,在IVR等不同部分之間進行一些剪貼調整,使用「相同」可以避免您在分機號碼上發生錯誤。

「(menuprompt)」被稱爲標籤,並且您可以在同一個上下文中轉到標籤,從而免除您必須計算「n」來計算要使用的優先級數字。

延伸閱讀:https://wiki.asterisk.org/wiki/display/AST/Contexts,+Extensions,+and+Priorities