2012-10-19 57 views
0

下面是在lua中爲自由切換編寫的IVR。我沒有複製整個IVR,只是從文件開始的一部分。星號vs自由切換配置

session:set_tts_parms("flite", "kar"); 
    session:speak("Welcome to the VoIP World!"); 
    while(session:ready() == true) do 
      session:speak("to go to the next level, press 1"); 
      session:speak("to hear my voice some more, press 2"); 
      session:speak("to go to the default IVR demo, press 5"); 
      session:speak("to exit, press 9"); 
      digits = session:getDigits(1, "", 3000); 
      freeswitch.consoleLog("info", "Got dtmf: ".. digits .."\n"); 



if (digits == "1") then 
       --next level stuff 
       session:speak("you selected 1"); 
       while(session:ready() == true) do 
         session:speak("to hear me speak, press 1"); 
         session:speak("to go back to the previous menu, press 2"); 
         session:speak("to exit, press 9"); 
        digits = session:getDigits(1, "", 3000); 
        freeswitch.consoleLog("info", "Got dtmf, level2: ".. digits .."\n"); 
        if (digits == "1") then 
          session:speak("Some people will tell you that life is good"); 
        elseif (digits == "2") then 
          break; 
        elseif (digits == "9") then 
          session:hangup(); 
        end 
      end 
    elseif (digits == "2") then 
      session:speak("What a Ride!"); 

我也寫一個IVR(只是舉個例子不一定是相同的),使用撥號計劃的Asterisk服務器,這在下面給出。

[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() 

現在我的問題效仿Lua代碼上面的功能,我需要一些膠水代碼或高於enough.If的IVR我在編程一個SIP服務器的IVR和SIP電話撥號到SIP服務器它會播放菜單嗎?我想了解這個架構,似乎缺少一些部分。任何幫助表示讚賞。

回答

1

我不明白爲什麼你需要兩臺具有相同功能的IVR服​​務器。在您的Asterisk撥號方案中,您可以制定規則將呼叫轉接到FreeSWITCH,然後您的Asterisk用戶將連接到那裏。

+1

我不是想有兩個servers.I已經FreeSWITCH的server.I要遷移到asterisk.I我努力學習星號和實施的Asterisk服務器上相同的功能。 – liv2hak

2

你很接近,但並不完全。

將上下文看作物理盒子。你不能穿過箱子裏的牆壁。所以,「標籤」(比如你(menuprompt))和擴展只適用於那個特定的盒子/背景。

在[incoming]上下文中,對「Goto(menuprompt)」的調用將引用[incoming]上下文中的「(menuprompt)」標籤。

在[main-menu]上下文中,對「Goto(menuprompt)」的調用將引用[main-menu]上下文中的「(menuprompt)」標籤。

「n」優先級是一個構造,意思是「在此上下文中比此前的優先級更高」。

因此,你的撥號方案最大的問題是你有一個新的上下文[主菜單],但沒有初始分機號碼。所以你的

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

...是「死」的代碼。它沒有做任何事情,因爲沒有與它關聯的擴展名。

所以,要解決你的代碼,你需要做的是這樣

exten => 1,1,Playback(digits/1) 
same => n,Goto(main-menu,3,1) 

...要能夠從[進入]跳到[主目錄]。要跳回去,你會做相反的事。

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